From 56105916271ff9a7c0bfa237b45b9b3fab9c570b Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 9 Jun 2021 11:30:46 -0500 Subject: Fix building and perf for bundles with 1000s of package and BA payloads Fixes other half of #5300 --- src/burn/engine/burnextension.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/burn/engine/burnextension.cpp') diff --git a/src/burn/engine/burnextension.cpp b/src/burn/engine/burnextension.cpp index 475df1c5..ee4b1542 100644 --- a/src/burn/engine/burnextension.cpp +++ b/src/burn/engine/burnextension.cpp @@ -26,6 +26,7 @@ EXTERN_C HRESULT BurnExtensionParseFromXml( IXMLDOMNodeList* pixnNodes = NULL; IXMLDOMNode* pixnNode = NULL; DWORD cNodes = 0; + LPWSTR scz = NULL; // Select BundleExtension nodes. hr = XmlSelectNodes(pixnBundle, L"BundleExtension", &pixnNodes); @@ -59,11 +60,11 @@ EXTERN_C HRESULT BurnExtensionParseFromXml( ExitOnFailure(hr, "Failed to get @Id."); // @EntryPayloadId - hr = XmlGetAttributeEx(pixnNode, L"EntryPayloadId", &pExtension->sczEntryPayloadId); - ExitOnFailure(hr, "Failed to get @EntryPayloadId."); + hr = XmlGetAttributeEx(pixnNode, L"EntryPayloadSourcePath", &scz); + ExitOnFailure(hr, "Failed to get @EntryPayloadSourcePath."); - hr = PayloadFindById(pBaPayloads, pExtension->sczEntryPayloadId, &pExtension->pEntryPayload); - ExitOnFailure(hr, "Failed to find BundleExtension EntryPayload '%ls'.", pExtension->sczEntryPayloadId); + hr = PayloadFindEmbeddedBySourcePath(pBaPayloads->sdhPayloads, scz, &pExtension->pEntryPayload); + ExitOnFailure(hr, "Failed to find BundleExtension EntryPayload '%ls'.", pExtension->sczId); // prepare next iteration ReleaseNullObject(pixnNode); @@ -72,6 +73,7 @@ EXTERN_C HRESULT BurnExtensionParseFromXml( hr = S_OK; LExit: + ReleaseStr(scz); ReleaseObject(pixnNode); ReleaseObject(pixnNodes); @@ -92,7 +94,6 @@ EXTERN_C void BurnExtensionUninitialize( { BURN_EXTENSION* pExtension = &pBurnExtensions->rgExtensions[i]; - ReleaseStr(pExtension->sczEntryPayloadId); ReleaseStr(pExtension->sczId); } MemFree(pBurnExtensions->rgExtensions); -- cgit v1.2.3-55-g6feb