From 5e5c52d477a28d4a2603a6a4b036ec2ab8a5a37a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Gouget?= Date: Tue, 19 Dec 2000 23:31:52 +0000 Subject: [PATCH] DUMMYSTRUCTNAME2 creates a conflict when using anonymous union names. --- dlls/user/exticon.c | 6 +++--- dlls/version/resource.c | 6 +++--- include/winnt.h | 2 +- library/loader.c | 4 ++-- loader/pe_resource.c | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dlls/user/exticon.c b/dlls/user/exticon.c index e541217bc03..4089c2ab363 100644 --- a/dlls/user/exticon.c +++ b/dlls/user/exticon.c @@ -78,7 +78,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI { pos = (min + max) / 2; if (entry[pos].u1.s2.Id == id) - return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s2.OffsetToDirectory); + return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s3.OffsetToDirectory); if (entry[pos].u1.s2.Id > id) max = pos - 1; else min = pos + 1; } @@ -96,7 +96,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 (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry->u2.s2.OffsetToDirectory); + return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry->u2.s3.OffsetToDirectory); } /************************************************************************* @@ -447,7 +447,7 @@ static HRESULT ICO_ExtractIconExW( const IMAGE_RESOURCE_DIRECTORY *resdir; /* go down this resource entry, name */ - resdir = (PIMAGE_RESOURCE_DIRECTORY)((DWORD)rootresdir+(xresent->u2.s2.OffsetToDirectory)); + resdir = (PIMAGE_RESOURCE_DIRECTORY)((DWORD)rootresdir+(xresent->u2.s3.OffsetToDirectory)); /* default language (0) */ resdir = find_entry_default(resdir,rootresdir); diff --git a/dlls/version/resource.c b/dlls/version/resource.c index 4279cd4683a..cdd9a1e3cf3 100644 --- a/dlls/version/resource.c +++ b/dlls/version/resource.c @@ -42,7 +42,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI { pos = (min + max) / 2; if (entry[pos].u1.s2.Id == id) - return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s2.OffsetToDirectory); + return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s3.OffsetToDirectory); if (entry[pos].u1.s2.Id > id) max = pos - 1; else min = pos + 1; } @@ -62,7 +62,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 (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry->u2.s2.OffsetToDirectory); + return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry->u2.s3.OffsetToDirectory); } @@ -104,7 +104,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_name( const IMAGE_RESOURCE_ res = strncmpiW( nameW, str->NameString, str->Length ); if (!res && namelen == str->Length) { - ret = (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s2.OffsetToDirectory); + ret = (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s3.OffsetToDirectory); break; } if (res < 0) max = pos - 1; diff --git a/include/winnt.h b/include/winnt.h index 1bc504d42a4..38e622bd64d 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -2535,7 +2535,7 @@ typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { unsigned OffsetToDirectory:31; unsigned DataIsDirectory:1; #endif - } DUMMYSTRUCTNAME2; + } DUMMYSTRUCTNAME3; } DUMMYUNIONNAME2; } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY; diff --git a/library/loader.c b/library/loader.c index aeb46f3e2ed..dd258b15cb9 100644 --- a/library/loader.c +++ b/library/loader.c @@ -134,8 +134,8 @@ static void fixup_resources( IMAGE_RESOURCE_DIRECTORY *dir, char *root, void *ba entry = (IMAGE_RESOURCE_DIRECTORY_ENTRY *)(dir + 1); for (i = 0; i < dir->NumberOfNamedEntries + dir->NumberOfIdEntries; i++, entry++) { - void *ptr = root + entry->u2.s2.OffsetToDirectory; - if (entry->u2.s2.DataIsDirectory) fixup_resources( ptr, root, base ); + void *ptr = root + entry->u2.s3.OffsetToDirectory; + if (entry->u2.s3.DataIsDirectory) fixup_resources( ptr, root, base ); else { IMAGE_RESOURCE_DATA_ENTRY *data = ptr; diff --git a/loader/pe_resource.c b/loader/pe_resource.c index e473bfc506e..4ccd5d3e495 100644 --- a/loader/pe_resource.c +++ b/loader/pe_resource.c @@ -67,7 +67,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI { pos = (min + max) / 2; if (entry[pos].u1.s2.Id == id) - return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s2.OffsetToDirectory); + return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s3.OffsetToDirectory); if (entry[pos].u1.s2.Id > id) max = pos - 1; else min = pos + 1; } @@ -106,7 +106,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_nameW( const IMAGE_RESOURCE str = (IMAGE_RESOURCE_DIR_STRING_U *)((char *)root + entry[pos].u1.s1.NameOffset); res = strncmpiW( name, str->NameString, str->Length ); if (!res && namelen == str->Length) - return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s2.OffsetToDirectory); + return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry[pos].u2.s3.OffsetToDirectory); if (res < 0) max = pos - 1; else min = pos + 1; } @@ -151,7 +151,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 (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry->u2.s2.OffsetToDirectory); + return (IMAGE_RESOURCE_DIRECTORY *)((char *)root + entry->u2.s3.OffsetToDirectory); }