James Hawkins : fusion: Handle loading 64-bit .NET assemblies.

Alexandre Julliard julliard at winehq.org
Tue Aug 19 08:46:36 CDT 2008


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

Author: James Hawkins <jhawkins at codeweavers.com>
Date:   Mon Aug 18 22:54:43 2008 -0500

fusion: Handle loading 64-bit .NET assemblies.

---

 dlls/fusion/assembly.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/fusion/assembly.c b/dlls/fusion/assembly.c
index ec86fd3..fc44e49 100644
--- a/dlls/fusion/assembly.c
+++ b/dlls/fusion/assembly.c
@@ -58,7 +58,7 @@ struct tagASSEMBLY
     HANDLE hmap;
     BYTE *data;
 
-    IMAGE_NT_HEADERS32 *nthdr;
+    IMAGE_NT_HEADERS *nthdr;
     IMAGE_COR20_HEADER *corhdr;
 
     METADATAHDR *metadatahdr;
@@ -647,7 +647,15 @@ static HRESULT parse_pe_header(ASSEMBLY *assembly)
     if (!assembly->nthdr)
         return E_FAIL;
 
-    datadirs = assembly->nthdr->OptionalHeader.DataDirectory;
+    if (assembly->nthdr->FileHeader.Machine == IMAGE_FILE_MACHINE_AMD64)
+    {
+        IMAGE_OPTIONAL_HEADER64 *opthdr =
+                (IMAGE_OPTIONAL_HEADER64 *)&assembly->nthdr->OptionalHeader;
+        datadirs = opthdr->DataDirectory;
+    }
+    else
+        datadirs = assembly->nthdr->OptionalHeader.DataDirectory;
+
     if (!datadirs)
         return E_FAIL;
 




More information about the wine-cvs mailing list