[PATCH 2/2] ntdll: Align FILE_*_DIRECTORY_INFORMATION structs to 8 bytes

Martin Storsjo martin at martin.st
Thu May 15 07:25:05 CDT 2014


Previously they were only aligned to 4 byte boundaries.
According to MSDN, they should be aligned to 8 byte boundaries
instead.

This matches what Windows actually does (tested on Windows 8.1).

This doesn't fix any currently known issue, but brings the behaviour
closer in line with specs.
---
 dlls/ntdll/directory.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index 50bf66a..04a5b75 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -228,15 +228,15 @@ static inline unsigned int dir_info_size( FILE_INFORMATION_CLASS class, unsigned
     switch (class)
     {
     case FileDirectoryInformation:
-        return (FIELD_OFFSET( FILE_DIRECTORY_INFORMATION, FileName[len] ) + 3) & ~3;
+        return (FIELD_OFFSET( FILE_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
     case FileBothDirectoryInformation:
-        return (FIELD_OFFSET( FILE_BOTH_DIRECTORY_INFORMATION, FileName[len] ) + 3) & ~3;
+        return (FIELD_OFFSET( FILE_BOTH_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
     case FileFullDirectoryInformation:
-        return (FIELD_OFFSET( FILE_FULL_DIRECTORY_INFORMATION, FileName[len] ) + 3) & ~3;
+        return (FIELD_OFFSET( FILE_FULL_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
     case FileIdBothDirectoryInformation:
-        return (FIELD_OFFSET( FILE_ID_BOTH_DIRECTORY_INFORMATION, FileName[len] ) + 3) & ~3;
+        return (FIELD_OFFSET( FILE_ID_BOTH_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
     case FileIdFullDirectoryInformation:
-        return (FIELD_OFFSET( FILE_ID_FULL_DIRECTORY_INFORMATION, FileName[len] ) + 3) & ~3;
+        return (FIELD_OFFSET( FILE_ID_FULL_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
     default:
         assert(0);
         return 0;
-- 
1.8.5.2 (Apple Git-48)




More information about the wine-patches mailing list