2007-11-22 Dick Porter <dick@ximian.com>
authorDick Porter <dick@acm.org>
Thu, 22 Nov 2007 14:00:33 +0000 (14:00 -0000)
committerDick Porter <dick@acm.org>
Thu, 22 Nov 2007 14:00:33 +0000 (14:00 -0000)
* versioninfo.c (find_pe_file_resources): Make it work on 64bit
systems.  Fixes bug 343353.

svn path=/trunk/mono/; revision=90155

mono/io-layer/ChangeLog
mono/io-layer/versioninfo.c

index 7ed768dc3d50c0f9cd5965775d75cb82d5b3122c..f8c6b5f2c0ac0299b3e2561ed86f2c4a83f41ada 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-22  Dick Porter  <dick@ximian.com>
+
+       * versioninfo.c (find_pe_file_resources): Make it work on 64bit
+       systems.  Fixes bug 343353.
+
 2007-11-21  Dick Porter  <dick@ximian.com>
 
        * processes.c (load_modules): Rewrite based on the libgc
index 63145a89ee5fac90d5d647fa7806f5749490b884..b28a1bc2de701c52319f5dafb8dadefe6c261627 100644 (file)
@@ -61,7 +61,7 @@ static gpointer get_ptr_from_rva (guint32 rva, WapiImageNTHeaders *ntheaders,
        delta = (guint32)(section_header->VirtualAddress -
                          section_header->PointerToRawData);
        
-       return(GUINT_TO_POINTER (GPOINTER_TO_UINT (file_map) + rva - delta));
+       return((guint8 *)file_map + rva - delta);
 }
 
 static gpointer scan_resource_dir (WapiImageResourceDirectory *root,
@@ -104,7 +104,7 @@ static gpointer scan_resource_dir (WapiImageResourceDirectory *root,
        }
        
        if (is_dir == TRUE) {
-               WapiImageResourceDirectory *res_dir = (WapiImageResourceDirectory *)GUINT_TO_POINTER (GPOINTER_TO_UINT (root) + dir_offset);
+               WapiImageResourceDirectory *res_dir = (WapiImageResourceDirectory *)((guint8 *)root + dir_offset);
                WapiImageResourceDirectoryEntry *sub_entries = (WapiImageResourceDirectoryEntry *)(res_dir + 1);
                guint32 entries, i;
                
@@ -124,7 +124,7 @@ static gpointer scan_resource_dir (WapiImageResourceDirectory *root,
                
                return(NULL);
        } else {
-               WapiImageResourceDataEntry *data_entry = (WapiImageResourceDataEntry *)GUINT_TO_POINTER (GPOINTER_TO_UINT (root) + data_offset);
+               WapiImageResourceDataEntry *data_entry = (WapiImageResourceDataEntry *)((guint8 *)root + data_offset);
                *size = GUINT32_FROM_LE (data_entry->Size);
                
                return(get_ptr_from_rva (data_entry->OffsetToData, nt_headers, file_map));
@@ -162,7 +162,7 @@ static gpointer find_pe_file_resources (gpointer file_map, guint32 map_size,
                return(NULL);
        }
        
-       nt_headers = (WapiImageNTHeaders *)GUINT_TO_POINTER ((GPOINTER_TO_UINT (file_map) + GUINT32_FROM_LE (dos_header->e_lfanew)));
+       nt_headers = (WapiImageNTHeaders *)((guint8 *)file_map + GUINT32_FROM_LE (dos_header->e_lfanew));
        if (nt_headers->Signature != IMAGE_NT_SIGNATURE) {
 #ifdef DEBUG
                g_message ("%s: Bad NT signature 0x%x", __func__,