diff options
-rw-r--r-- | src/binder/clrprivbindercoreclr.cpp | 4 | ||||
-rw-r--r-- | src/vm/assemblynative.cpp | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/binder/clrprivbindercoreclr.cpp b/src/binder/clrprivbindercoreclr.cpp index b7a6807520..d756454edb 100644 --- a/src/binder/clrprivbindercoreclr.cpp +++ b/src/binder/clrprivbindercoreclr.cpp @@ -159,8 +159,8 @@ HRESULT CLRPrivBinderCoreCLR::BindUsingPEImage( /* in */ PEImage *pPEImage, { if (pCoreCLRFoundAssembly->GetIsInGAC()) { - // If we were able to bind to a TPA assembly, then fail the load - IF_FAIL_GO(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)); + *ppAssembly = pCoreCLRFoundAssembly.Extract(); + goto Exit; } } } diff --git a/src/vm/assemblynative.cpp b/src/vm/assemblynative.cpp index ed5cd7207a..b9079ec06a 100644 --- a/src/vm/assemblynative.cpp +++ b/src/vm/assemblynative.cpp @@ -507,9 +507,12 @@ Assembly* AssemblyNative::LoadFromPEImage(ICLRPrivBinder* pBinderContext, PEImag spec.GetFileOrDisplayName(0, name); COMPlusThrowHR(COR_E_FILELOAD, dwMessageID, name); } + + BINDER_SPACE::Assembly* assem; + assem = BINDER_SPACE::GetAssemblyFromPrivAssemblyFast(pAssembly); - PEAssemblyHolder pPEAssembly(PEAssembly::Open(pParentAssembly, pILImage, pNIImage, pAssembly, FALSE)); - + PEAssemblyHolder pPEAssembly(PEAssembly::Open(pParentAssembly, assem->GetPEImage(), assem->GetNativePEImage(), pAssembly, FALSE)); + GCX_COOP(); IApplicationSecurityDescriptor *pDomainSecDesc = pCurDomain->GetSecurityDescriptor(); |