[KERNEL32/WINE] Sync res.c with Wine Staging 3.3. CORE-14434
authorAmine Khaldi <amine.khaldi@reactos.org>
Wed, 11 Apr 2018 11:36:44 +0000 (12:36 +0100)
committerAmine Khaldi <amine.khaldi@reactos.org>
Wed, 11 Apr 2018 11:36:44 +0000 (12:36 +0100)
dll/win32/kernel32/wine/res.c
media/doc/README.WINE

index d6b0e5e..971d27a 100644 (file)
@@ -1383,7 +1383,7 @@ static BOOL write_raw_resources( QUEUEDUPDATES *updates )
 {
     static const WCHAR prefix[] = { 'r','e','s','u',0 };
     WCHAR tempdir[MAX_PATH], tempfile[MAX_PATH];
-    DWORD section_size;
+    DWORD i, section_size;
     BOOL ret = FALSE;
     IMAGE_SECTION_HEADER *sec;
     IMAGE_NT_HEADERS32 *nt;
@@ -1567,11 +1567,19 @@ static BOOL write_raw_resources( QUEUEDUPDATES *updates )
             nt64->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = sec->VirtualAddress;
             nt64->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = res_size.total_size;
             nt64->OptionalHeader.SizeOfInitializedData = get_init_data_size( write_map->base, mapping_size );
+
+            for (i=0; i<nt64->OptionalHeader.NumberOfRvaAndSizes; i++)
+                if (nt64->OptionalHeader.DataDirectory[i].VirtualAddress > sec->VirtualAddress)
+                    nt64->OptionalHeader.DataDirectory[i].VirtualAddress += rva_delta;
         } else {
             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 );
+
+            for (i=0; i<nt->OptionalHeader.NumberOfRvaAndSizes; i++)
+                if (nt->OptionalHeader.DataDirectory[i].VirtualAddress > sec->VirtualAddress)
+                    nt->OptionalHeader.DataDirectory[i].VirtualAddress += rva_delta;
         }
     }
 
index 7580f00..8cf4765 100644 (file)
@@ -274,7 +274,7 @@ kernel32 -
   reactos/dll/win32/kernel32/wine/comm.c                 # Synced in r52754
   reactos/dll/win32/kernel32/wine/lzexpand.c             # Synced to WineStaging-3.3
   reactos/dll/win32/kernel32/wine/profile.c              # Synced to WineStaging-3.3
-  reactos/dll/win32/kernel32/wine/res.c                  # Partially synced to WineStaging-1.7.55
+  reactos/dll/win32/kernel32/wine/res.c                  # Partially synced to WineStaging-3.3
   reactos/dll/win32/kernel32/winnls/string/casemap.c     # Synced to WineStaging-1.7.55
   reactos/dll/win32/kernel32/winnls/string/chartype.c    # Synced in r52754
   reactos/dll/win32/kernel32/winnls/string/collation.c   # Synced to WineStaging-1.7.55