[1/2] include: Make IMAGE_RESOURCE_DIRECTORY_ENTRY match PSDK definition.

Dmitry Timoshkov dmitry at baikal.ru
Mon Apr 29 02:19:17 CDT 2013


---
 dlls/kernel32/resource.c | 62 ++++++++++++++++++++++++------------------------
 dlls/ntdll/resource.c    | 22 ++++++++---------
 dlls/user32/exticon.c    | 12 +++++-----
 dlls/ver.dll16/version.c | 12 +++++-----
 dlls/version/version.c   |  8 +++----
 include/winnt.h          | 16 ++++++-------
 libs/wine/loader.c       |  4 ++--
 tools/winedump/pe.c      | 29 +++++++++++-----------
 8 files changed, 81 insertions(+), 84 deletions(-)

diff --git a/dlls/kernel32/resource.c b/dlls/kernel32/resource.c
index 0235b3c..a9491e0 100644
--- a/dlls/kernel32/resource.c
+++ b/dlls/kernel32/resource.c
@@ -219,9 +219,9 @@ BOOL WINAPI EnumResourceTypesA( HMODULE hmod, ENUMRESTYPEPROCA lpfun, LONG_PTR l
     et = (const IMAGE_RESOURCE_DIRECTORY_ENTRY *)(resdir + 1);
     for (i = 0; i < resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries; i++)
     {
-        if (et[i].u1.s1.NameIsString)
+        if (et[i].u.s.NameIsString)
         {
-            str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)resdir + et[i].u1.s1.NameOffset);
+            str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)resdir + et[i].u.s.NameOffset);
             newlen = WideCharToMultiByte( CP_ACP, 0, str->NameString, str->Length, NULL, 0, NULL, NULL);
             if (newlen + 1 > len)
             {
@@ -235,7 +235,7 @@ BOOL WINAPI EnumResourceTypesA( HMODULE hmod, ENUMRESTYPEPROCA lpfun, LONG_PTR l
         }
         else
         {
-            ret = lpfun( hmod, UIntToPtr(et[i].u1.s2.Id), lparam );
+            ret = lpfun( hmod, UIntToPtr(et[i].u.Id), lparam );
         }
         if (!ret) break;
     }
@@ -269,9 +269,9 @@ BOOL WINAPI EnumResourceTypesW( HMODULE hmod, ENUMRESTYPEPROCW lpfun, LONG_PTR l
     et = (const IMAGE_RESOURCE_DIRECTORY_ENTRY *)(resdir + 1);
     for (i = 0; i < resdir->NumberOfNamedEntries + resdir->NumberOfIdEntries; i++)
     {
-        if (et[i].u1.s1.NameIsString)
+        if (et[i].u.s.NameIsString)
         {
-            str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)resdir + et[i].u1.s1.NameOffset);
+            str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)resdir + et[i].u.s.NameOffset);
             if (str->Length + 1 > len)
             {
                 len = str->Length + 1;
@@ -284,7 +284,7 @@ BOOL WINAPI EnumResourceTypesW( HMODULE hmod, ENUMRESTYPEPROCW lpfun, LONG_PTR l
         }
         else
         {
-            ret = lpfun( hmod, UIntToPtr(et[i].u1.s2.Id), lparam );
+            ret = lpfun( hmod, UIntToPtr(et[i].u.Id), lparam );
         }
         if (!ret) break;
     }
@@ -326,9 +326,9 @@ BOOL WINAPI EnumResourceNamesA( HMODULE hmod, LPCSTR type, ENUMRESNAMEPROCA lpfu
     {
         for (i = 0; i < resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries; i++)
         {
-            if (et[i].u1.s1.NameIsString)
+            if (et[i].u.s.NameIsString)
             {
-                str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)basedir + et[i].u1.s1.NameOffset);
+                str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)basedir + et[i].u.s.NameOffset);
                 newlen = WideCharToMultiByte(CP_ACP, 0, str->NameString, str->Length, NULL, 0, NULL, NULL);
                 if (newlen + 1 > len)
                 {
@@ -346,7 +346,7 @@ BOOL WINAPI EnumResourceNamesA( HMODULE hmod, LPCSTR type, ENUMRESNAMEPROCA lpfu
             }
             else
             {
-                ret = lpfun( hmod, type, UIntToPtr(et[i].u1.s2.Id), lparam );
+                ret = lpfun( hmod, type, UIntToPtr(et[i].u.Id), lparam );
             }
             if (!ret) break;
         }
@@ -398,9 +398,9 @@ BOOL WINAPI EnumResourceNamesW( HMODULE hmod, LPCWSTR type, ENUMRESNAMEPROCW lpf
     {
         for (i = 0; i < resdir->NumberOfNamedEntries+resdir->NumberOfIdEntries; i++)
         {
-            if (et[i].u1.s1.NameIsString)
+            if (et[i].u.s.NameIsString)
             {
-                str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)basedir + et[i].u1.s1.NameOffset);
+                str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)basedir + et[i].u.s.NameOffset);
                 if (str->Length + 1 > len)
                 {
                     len = str->Length + 1;
@@ -417,7 +417,7 @@ BOOL WINAPI EnumResourceNamesW( HMODULE hmod, LPCWSTR type, ENUMRESNAMEPROCW lpf
             }
             else
             {
-                ret = lpfun( hmod, type, UIntToPtr(et[i].u1.s2.Id), lparam );
+                ret = lpfun( hmod, type, UIntToPtr(et[i].u.Id), lparam );
             }
             if (!ret) break;
         }
@@ -470,7 +470,7 @@ BOOL WINAPI EnumResourceLanguagesA( HMODULE hmod, LPCSTR type, LPCSTR name,
     {
         for (i = 0; i < resdir->NumberOfNamedEntries + resdir->NumberOfIdEntries; i++)
         {
-            ret = lpfun( hmod, type, name, et[i].u1.s2.Id, lparam );
+            ret = lpfun( hmod, type, name, et[i].u.Id, lparam );
             if (!ret) break;
         }
     }
@@ -522,7 +522,7 @@ BOOL WINAPI EnumResourceLanguagesW( HMODULE hmod, LPCWSTR type, LPCWSTR name,
     {
         for (i = 0; i < resdir->NumberOfNamedEntries + resdir->NumberOfIdEntries; i++)
         {
-            ret = lpfun( hmod, type, name, et[i].u1.s2.Id, lparam );
+            ret = lpfun( hmod, type, name, et[i].u.Id, lparam );
             if (!ret) break;
         }
     }
@@ -948,10 +948,10 @@ static LPWSTR resource_dup_string( const IMAGE_RESOURCE_DIRECTORY *root, const I
     const IMAGE_RESOURCE_DIR_STRING_U* string;
     LPWSTR s;
 
-    if (!entry->u1.s1.NameIsString)
-        return UIntToPtr(entry->u1.s2.Id);
+    if (!entry->u.s.NameIsString)
+        return UIntToPtr(entry->u.Id);
 
-    string = (const IMAGE_RESOURCE_DIR_STRING_U*) (((const char *)root) + entry->u1.s1.NameOffset);
+    string = (const IMAGE_RESOURCE_DIR_STRING_U*) (((const char *)root) + entry->u.s.NameOffset);
     s = HeapAlloc(GetProcessHeap(), 0, (string->Length + 1)*sizeof (WCHAR) );
     memcpy( s, string->NameString, (string->Length + 1)*sizeof (WCHAR) );
     s[string->Length] = 0;
@@ -980,7 +980,7 @@ static BOOL enumerate_mapped_resources( QUEUEDUPDATES *updates,
 
         Type = resource_dup_string( root, e1 );
 
-        namedir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + e1->u2.s3.OffsetToDirectory);
+        namedir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + e1->u2.s2.OffsetToDirectory);
         for (j = 0; j < namedir->NumberOfNamedEntries + namedir->NumberOfIdEntries; j++)
         {
             LPWSTR Name;
@@ -989,7 +989,7 @@ static BOOL enumerate_mapped_resources( QUEUEDUPDATES *updates,
 
             Name = resource_dup_string( root, e2 );
 
-            langdir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + e2->u2.s3.OffsetToDirectory);
+            langdir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + e2->u2.s2.OffsetToDirectory);
             for (k = 0; k < langdir->NumberOfNamedEntries + langdir->NumberOfIdEntries; k++)
             {
                 LANGID Lang;
@@ -998,7 +998,7 @@ static BOOL enumerate_mapped_resources( QUEUEDUPDATES *updates,
 
                 e3 = (const IMAGE_RESOURCE_DIRECTORY_ENTRY*)(langdir + 1) + k;
 
-                Lang = e3->u1.s2.Id;
+                Lang = e3->u.Id;
 
                 data = (const IMAGE_RESOURCE_DATA_ENTRY *)((const char *)root + e3->u2.OffsetToData);
 
@@ -1235,8 +1235,8 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
             DWORD len;
 
             root->NumberOfNamedEntries++;
-            e1->u1.s1.NameIsString = 1;
-            e1->u1.s1.NameOffset = si->strings_ofs;
+            e1->u.s.NameIsString = 1;
+            e1->u.s.NameOffset = si->strings_ofs;
 
             strings = (WCHAR*) &base[si->strings_ofs];
             len = lstrlenW( types->id );
@@ -1247,10 +1247,10 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
         else
         {
             root->NumberOfIdEntries++;
-            e1->u1.s2.Id = LOWORD( types->id );
+            e1->u.Id = LOWORD( types->id );
         }
-        e1->u2.s3.OffsetToDirectory = si->names_ofs;
-        e1->u2.s3.DataIsDirectory = TRUE;
+        e1->u2.s2.OffsetToDirectory = si->names_ofs;
+        e1->u2.s2.DataIsDirectory = TRUE;
         si->types_ofs += sizeof (IMAGE_RESOURCE_DIRECTORY_ENTRY);
 
         namedir = (IMAGE_RESOURCE_DIRECTORY*) &base[si->names_ofs];
@@ -1271,8 +1271,8 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
                 DWORD len;
 
                 namedir->NumberOfNamedEntries++;
-                e2->u1.s1.NameIsString = 1;
-                e2->u1.s1.NameOffset = si->strings_ofs;
+                e2->u.s.NameIsString = 1;
+                e2->u.s.NameOffset = si->strings_ofs;
 
                 strings = (WCHAR*) &base[si->strings_ofs];
                 len = lstrlenW( names->id );
@@ -1283,10 +1283,10 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
             else
             {
                 namedir->NumberOfIdEntries++;
-                e2->u1.s2.Id = LOWORD( names->id );
+                e2->u.Id = LOWORD( names->id );
             }
-            e2->u2.s3.OffsetToDirectory = si->langs_ofs;
-            e2->u2.s3.DataIsDirectory = TRUE;
+            e2->u2.s2.OffsetToDirectory = si->langs_ofs;
+            e2->u2.s2.DataIsDirectory = TRUE;
             si->names_ofs += sizeof (IMAGE_RESOURCE_DIRECTORY_ENTRY);
 
             langdir = (IMAGE_RESOURCE_DIRECTORY*) &base[si->langs_ofs];
@@ -1303,7 +1303,7 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
                 e3 = (IMAGE_RESOURCE_DIRECTORY_ENTRY*) &base[si->langs_ofs];
                 memset( e3, 0, sizeof *e3 );
                 langdir->NumberOfIdEntries++;
-                e3->u1.s2.Id = LOWORD( data->lang );
+                e3->u.Id = LOWORD( data->lang );
                 e3->u2.OffsetToData = si->data_entry_ofs;
 
                 si->langs_ofs += sizeof (IMAGE_RESOURCE_DIRECTORY_ENTRY);
diff --git a/dlls/ntdll/resource.c b/dlls/ntdll/resource.c
index f93a705..0d60d96 100644
--- a/dlls/ntdll/resource.c
+++ b/dlls/ntdll/resource.c
@@ -89,8 +89,8 @@ static const IMAGE_RESOURCE_DIRECTORY *find_first_entry( const IMAGE_RESOURCE_DI
 
     for (pos = 0; pos < dir->NumberOfNamedEntries + dir->NumberOfIdEntries; pos++)
     {
-        if (!entry[pos].u2.s3.DataIsDirectory == !want_dir)
-            return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s3.OffsetToDirectory);
+        if (!entry[pos].u2.s2.DataIsDirectory == !want_dir)
+            return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s2.OffsetToDirectory);
     }
     return NULL;
 }
@@ -113,17 +113,17 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI
     while (min <= max)
     {
         pos = (min + max) / 2;
-        if (entry[pos].u1.s2.Id == id)
+        if (entry[pos].u.Id == id)
         {
-            if (!entry[pos].u2.s3.DataIsDirectory == !want_dir)
+            if (!entry[pos].u2.s2.DataIsDirectory == !want_dir)
             {
                 TRACE("root %p dir %p id %04x ret %p\n",
-                      root, dir, id, (const char*)root + entry[pos].u2.s3.OffsetToDirectory);
-                return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s3.OffsetToDirectory);
+                      root, dir, id, (const char*)root + entry[pos].u2.s2.OffsetToDirectory);
+                return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s2.OffsetToDirectory);
             }
             break;
         }
-        if (entry[pos].u1.s2.Id > id) max = pos - 1;
+        if (entry[pos].u.Id > id) max = pos - 1;
         else min = pos + 1;
     }
     TRACE("root %p dir %p id %04x not found\n", root, dir, id );
@@ -152,15 +152,15 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_name( const IMAGE_RESOURCE_
     while (min <= max)
     {
         pos = (min + max) / 2;
-        str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const char *)root + entry[pos].u1.s1.NameOffset);
+        str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const char *)root + entry[pos].u.s.NameOffset);
         res = strncmpW( name, str->NameString, str->Length );
         if (!res && namelen == str->Length)
         {
-            if (!entry[pos].u2.s3.DataIsDirectory == !want_dir)
+            if (!entry[pos].u2.s2.DataIsDirectory == !want_dir)
             {
                 TRACE("root %p dir %p name %s ret %p\n",
-                      root, dir, debugstr_w(name), (const char*)root + entry[pos].u2.s3.OffsetToDirectory);
-                return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s3.OffsetToDirectory);
+                      root, dir, debugstr_w(name), (const char*)root + entry[pos].u2.s2.OffsetToDirectory);
+                return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s2.OffsetToDirectory);
             }
             break;
         }
diff --git a/dlls/user32/exticon.c b/dlls/user32/exticon.c
index 5682c77..5b9d681 100644
--- a/dlls/user32/exticon.c
+++ b/dlls/user32/exticon.c
@@ -120,9 +120,9 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI
     while (min <= max)
     {
         pos = (min + max) / 2;
-        if (entry[pos].u1.s2.Id == id)
-            return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s3.OffsetToDirectory);
-        if (entry[pos].u1.s2.Id > id) max = pos - 1;
+        if (entry[pos].u.Id == id)
+            return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s2.OffsetToDirectory);
+        if (entry[pos].u.Id > id) max = pos - 1;
         else min = pos + 1;
     }
     return NULL;
@@ -139,7 +139,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_default( const IMAGE_RESOURCE_
 {
     const IMAGE_RESOURCE_DIRECTORY_ENTRY *entry;
     entry = (const IMAGE_RESOURCE_DIRECTORY_ENTRY *)(dir + 1);
-    return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry->u2.s3.OffsetToDirectory);
+    return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry->u2.s2.OffsetToDirectory);
 }
 
 /*************************************************************************
@@ -486,7 +486,7 @@ static UINT ICO_ExtractIconExW(
 
 	    while(n<iconDirCount && xprdeTmp)
 	    {
-              if(xprdeTmp->u1.s2.Id ==  iId)
+              if(xprdeTmp->u.Id ==  iId)
               {
                   nIconIndex = n;
                   break;
@@ -522,7 +522,7 @@ static UINT ICO_ExtractIconExW(
 	    const IMAGE_RESOURCE_DIRECTORY *resdir;
 
 	    /* go down this resource entry, name */
-            resdir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)rootresdir + xresent->u2.s3.OffsetToDirectory);
+            resdir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)rootresdir + xresent->u2.s2.OffsetToDirectory);
 
 	    /* default language (0) */
 	    resdir = find_entry_default(resdir,rootresdir);
diff --git a/dlls/ver.dll16/version.c b/dlls/ver.dll16/version.c
index 950b650..45b9277 100644
--- a/dlls/ver.dll16/version.c
+++ b/dlls/ver.dll16/version.c
@@ -60,9 +60,9 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI
     while (min <= max)
     {
         pos = (min + max) / 2;
-        if (entry[pos].u1.s2.Id == id)
-            return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s3.OffsetToDirectory);
-        if (entry[pos].u1.s2.Id > id) max = pos - 1;
+        if (entry[pos].u.Id == id)
+            return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s2.OffsetToDirectory);
+        if (entry[pos].u.Id > id) max = pos - 1;
         else min = pos + 1;
     }
     return NULL;
@@ -81,7 +81,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_default( const IMAGE_RESOURCE_
     const IMAGE_RESOURCE_DIRECTORY_ENTRY *entry;
 
     entry = (const IMAGE_RESOURCE_DIRECTORY_ENTRY *)(dir + 1);
-    return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry->u2.s3.OffsetToDirectory);
+    return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry->u2.s2.OffsetToDirectory);
 }
 
 
@@ -119,11 +119,11 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_name( const IMAGE_RESOURCE_
         while (min <= max)
         {
             pos = (min + max) / 2;
-            str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const char *)root + entry[pos].u1.s1.NameOffset);
+            str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const char *)root + entry[pos].u.s.NameOffset);
             res = strncmpiW( nameW, str->NameString, str->Length );
             if (!res && namelen == str->Length)
             {
-                ret = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s3.OffsetToDirectory);
+                ret = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s2.OffsetToDirectory);
                 break;
             }
             if (res < 0) max = pos - 1;
diff --git a/dlls/version/version.c b/dlls/version/version.c
index bc90dcc..19836ce 100644
--- a/dlls/version/version.c
+++ b/dlls/version/version.c
@@ -84,9 +84,9 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI
     while (min <= max)
     {
         pos = (min + max) / 2;
-        if (entry[pos].u1.s2.Id == id)
-            return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s3.OffsetToDirectory);
-        if (entry[pos].u1.s2.Id > id) max = pos - 1;
+        if (entry[pos].u.Id == id)
+            return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry[pos].u2.s2.OffsetToDirectory);
+        if (entry[pos].u.Id > id) max = pos - 1;
         else min = pos + 1;
     }
     return NULL;
@@ -105,7 +105,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_default( const IMAGE_RESOURCE_
     const IMAGE_RESOURCE_DIRECTORY_ENTRY *entry;
 
     entry = (const IMAGE_RESOURCE_DIRECTORY_ENTRY *)(dir + 1);
-    return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry->u2.s3.OffsetToDirectory);
+    return (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + entry->u2.s2.OffsetToDirectory);
 }
 
 
diff --git a/include/winnt.h b/include/winnt.h
index 79e91c0..bdfa464 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -3343,18 +3343,16 @@ typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
 			unsigned NameOffset:31;
 			unsigned NameIsString:1;
 #endif
-		} DUMMYSTRUCTNAME1;
+		} DUMMYSTRUCTNAME;
 		DWORD   Name;
-                struct {
 #ifdef WORDS_BIGENDIAN
-			WORD    __pad;
-			WORD    Id;
+		WORD    __pad;
+		WORD    Id;
 #else
-			WORD    Id;
-			WORD    __pad;
+		WORD    Id;
+		WORD    __pad;
 #endif
-		} DUMMYSTRUCTNAME2;
-	} DUMMYUNIONNAME1;
+	} DUMMYUNIONNAME;
 	union {
 		DWORD   OffsetToData;
 		struct {
@@ -3365,7 +3363,7 @@ typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
 			unsigned OffsetToDirectory:31;
 			unsigned DataIsDirectory:1;
 #endif
-		} DUMMYSTRUCTNAME3;
+		} DUMMYSTRUCTNAME2;
 	} DUMMYUNIONNAME2;
 } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
 
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 7af1233..4e78116 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -359,8 +359,8 @@ static void fixup_resources( IMAGE_RESOURCE_DIRECTORY *dir, BYTE *root, int delt
     entry = (IMAGE_RESOURCE_DIRECTORY_ENTRY *)(dir + 1);
     for (i = 0; i < dir->NumberOfNamedEntries + dir->NumberOfIdEntries; i++, entry++)
     {
-        void *ptr = root + entry->u2.s3.OffsetToDirectory;
-        if (entry->u2.s3.DataIsDirectory) fixup_resources( ptr, root, delta );
+        void *ptr = root + entry->u2.s2.OffsetToDirectory;
+        if (entry->u2.s2.DataIsDirectory) fixup_resources( ptr, root, delta );
         else
         {
             IMAGE_RESOURCE_DATA_ENTRY *data = ptr;
diff --git a/tools/winedump/pe.c b/tools/winedump/pe.c
index 2029ef2..c26ae69 100644
--- a/tools/winedump/pe.c
+++ b/tools/winedump/pe.c
@@ -1384,52 +1384,51 @@ static void dump_dir_resource(void)
     for (i = 0; i< root->NumberOfNamedEntries + root->NumberOfIdEntries; i++)
     {
         e1 = (const IMAGE_RESOURCE_DIRECTORY_ENTRY*)(root + 1) + i;
-        namedir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + e1->u2.s3.OffsetToDirectory);
+        namedir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + e1->u2.s2.OffsetToDirectory);
         for (j = 0; j < namedir->NumberOfNamedEntries + namedir->NumberOfIdEntries; j++)
         {
             e2 = (const IMAGE_RESOURCE_DIRECTORY_ENTRY*)(namedir + 1) + j;
-            langdir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + e2->u2.s3.OffsetToDirectory);
+            langdir = (const IMAGE_RESOURCE_DIRECTORY *)((const char *)root + e2->u2.s2.OffsetToDirectory);
             for (k = 0; k < langdir->NumberOfNamedEntries + langdir->NumberOfIdEntries; k++)
             {
                 e3 = (const IMAGE_RESOURCE_DIRECTORY_ENTRY*)(langdir + 1) + k;
 
                 printf( "\n  " );
-                if (e1->u1.s1.NameIsString)
+                if (e1->u.s.NameIsString)
                 {
-                    string = (const IMAGE_RESOURCE_DIR_STRING_U*)((const char *)root + e1->u1.s1.NameOffset);
+                    string = (const IMAGE_RESOURCE_DIR_STRING_U*)((const char *)root + e1->u.s.NameOffset);
                     dump_unicode_str( string->NameString, string->Length );
                 }
                 else
                 {
-                    const char *type = get_resource_type( e1->u1.s2.Id );
+                    const char *type = get_resource_type( e1->u.Id );
                     if (type) printf( "%s", type );
-                    else printf( "%04x", e1->u1.s2.Id );
+                    else printf( "%04x", e1->u.Id );
                 }
 
                 printf( " Name=" );
-                if (e2->u1.s1.NameIsString)
+                if (e2->u.s.NameIsString)
                 {
-                    string = (const IMAGE_RESOURCE_DIR_STRING_U*) ((const char *)root + e2->u1.s1.NameOffset);
+                    string = (const IMAGE_RESOURCE_DIR_STRING_U*) ((const char *)root + e2->u.s.NameOffset);
                     dump_unicode_str( string->NameString, string->Length );
                 }
                 else
-                    printf( "%04x", e2->u1.s2.Id );
+                    printf( "%04x", e2->u.Id );
 
-                printf( " Language=%04x:\n", e3->u1.s2.Id );
+                printf( " Language=%04x:\n", e3->u.Id );
                 data = (const IMAGE_RESOURCE_DATA_ENTRY *)((const char *)root + e3->u2.OffsetToData);
-                if (e1->u1.s1.NameIsString)
+                if (e1->u.s.NameIsString)
                 {
                     dump_data( RVA( data->OffsetToData, data->Size ), data->Size, "    " );
                 }
-                else switch(e1->u1.s2.Id)
+                else switch(e1->u.Id)
                 {
                 case 6:
-                    dump_string_data( RVA( data->OffsetToData, data->Size ), data->Size,
-                                      e2->u1.s2.Id, "    " );
+                    dump_string_data( RVA( data->OffsetToData, data->Size ), data->Size,                                      e2->u.Id, "    " );
                     break;
                 case 11:
                     dump_msgtable_data( RVA( data->OffsetToData, data->Size ), data->Size,
-                                        e2->u1.s2.Id, "    " );
+                                        e2->u.Id, "    " );
                     break;
                 default:
                     dump_data( RVA( data->OffsetToData, data->Size ), data->Size, "    " );
-- 
1.8.2.1




More information about the wine-patches mailing list