@@ -41,7 +41,7 @@ NativeImageIndexTraits::count_t NativeImageIndexTraits::Hash(LPCUTF8 a)
4141 return SString (SString::Utf8Literal, a).HashCaseInsensitive ();
4242}
4343
44- NativeImage::NativeImage (AssemblyBinder *pAssemblyBinder, PEImageLayout *pImageLayout, LPCUTF8 imageFileName)
44+ NativeImage::NativeImage (AssemblyBinder *pAssemblyBinder, ReadyToRunLoadedImage *pImageLayout, LPCUTF8 imageFileName)
4545 : m_eagerFixupsLock(CrstNativeImageEagerFixups)
4646{
4747 CONTRACTL
@@ -64,7 +64,7 @@ void NativeImage::Initialize(READYTORUN_HEADER *pHeader, LoaderAllocator *pLoade
6464{
6565 LoaderHeap *pHeap = pLoaderAllocator->GetHighFrequencyHeap ();
6666
67- m_pReadyToRunInfo = new ReadyToRunInfo (/* pModule*/ NULL , pLoaderAllocator, m_pImageLayout, pHeader, this , pamTracker);
67+ m_pReadyToRunInfo = new ReadyToRunInfo (/* pModule*/ NULL , pLoaderAllocator, pHeader, this , m_pImageLayout , pamTracker);
6868 m_pComponentAssemblies = m_pReadyToRunInfo->FindSection (ReadyToRunSectionType::ComponentAssemblies);
6969 m_componentAssemblyCount = m_pComponentAssemblies->Size / sizeof (READYTORUN_COMPONENT_ASSEMBLIES_ENTRY);
7070
@@ -236,7 +236,14 @@ NativeImage *NativeImage::Open(
236236 {
237237 COMPlusThrowHR (COR_E_BADIMAGEFORMAT);
238238 }
239- NewHolder<NativeImage> image = new NativeImage (pAssemblyBinder, peLoadedImage.Extract (), nativeImageFileName);
239+
240+ NewHolder<ReadyToRunLoadedImage> peLoadedImageHolder = new ReadyToRunLoadedImage (
241+ (TADDR)peLoadedImage->GetBase (),
242+ peLoadedImage->GetVirtualSize (),
243+ peLoadedImage.Extract (),
244+ [](void * img) { delete (PEImageLayout*)img; });
245+
246+ NewHolder<NativeImage> image = new NativeImage (pAssemblyBinder, peLoadedImageHolder.Extract (), nativeImageFileName);
240247 AllocMemTracker amTracker;
241248 image->Initialize (pHeader, pLoaderAllocator, &amTracker);
242249 pExistingImage = AppDomain::GetCurrentDomain ()->SetNativeImage (nativeImageFileName, image);
0 commit comments