Sebastian Lackner : kernel32: Update VirtualAddress of resource section in write_raw_resources.

Alexandre Julliard julliard at winehq.org
Tue Jun 17 14:40:50 CDT 2014


Module: wine
Branch: master
Commit: 270d66efc74c11d86ea1c62d289c825a225b1f37
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=270d66efc74c11d86ea1c62d289c825a225b1f37

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Sun Jun 15 23:38:38 2014 +0200

kernel32: Update VirtualAddress of resource section in write_raw_resources.

---

 dlls/kernel32/resource.c       |    1 +
 dlls/kernel32/tests/resource.c |    6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/dlls/kernel32/resource.c b/dlls/kernel32/resource.c
index e829f28..ecd599f 100644
--- a/dlls/kernel32/resource.c
+++ b/dlls/kernel32/resource.c
@@ -1554,6 +1554,7 @@ static BOOL write_raw_resources( QUEUEDUPDATES *updates )
         sec->SizeOfRawData = section_size;
         sec->Misc.VirtualSize = virtual_section_size;
         nt->OptionalHeader.SizeOfImage += rva_delta;
+        nt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = sec->VirtualAddress;
         nt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = res_size.total_size;
         nt->OptionalHeader.SizeOfInitializedData = get_init_data_size( write_map->base, mapping_size );
     }
diff --git a/dlls/kernel32/tests/resource.c b/dlls/kernel32/tests/resource.c
index f94fed6..43551fa 100644
--- a/dlls/kernel32/tests/resource.c
+++ b/dlls/kernel32/tests/resource.c
@@ -394,6 +394,7 @@ static void check_exe( const sec_verify *verify )
     int i;
     IMAGE_DOS_HEADER *dos;
     IMAGE_NT_HEADERS *nt;
+    IMAGE_OPTIONAL_HEADER *opt;
     IMAGE_SECTION_HEADER *sec;
     IMAGE_RESOURCE_DIRECTORY *dir;
     HANDLE file, mapping;
@@ -415,6 +416,7 @@ static void check_exe( const sec_verify *verify )
         goto end;
 
     nt = (void*) ((BYTE*) dos + dos->e_lfanew);
+    opt = &nt->OptionalHeader;
     sec = (void*) &nt[1];
 
     for(i = 0; i < max_sections; i++)
@@ -444,6 +446,10 @@ static void check_exe( const sec_verify *verify )
                 verify->NumberOfNamedEntries, dir->NumberOfNamedEntries);
         ok( dir->NumberOfIdEntries == verify->NumberOfIdEntries, "NumberOfIdEntries should be %d instead of %d\n",
                 verify->NumberOfIdEntries, dir->NumberOfIdEntries);
+
+        ok(opt->DataDirectory[IMAGE_FILE_RESOURCE_DIRECTORY].VirtualAddress == sec[verify->rsrc_section].VirtualAddress,
+                "VirtualAddress in optional header should be %d instead of %d\n",
+                sec[verify->rsrc_section].VirtualAddress, opt->DataDirectory[IMAGE_FILE_RESOURCE_DIRECTORY].VirtualAddress);
     }
 
 end:




More information about the wine-cvs mailing list