From aa344f0dcf9a2786148cdc12b09d865ee5fcb8b9 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 24 Feb 2025 11:50:29 -0800 Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20change?= =?UTF-8?q?s=20to=20main=20this=20commit=20is=20based=20on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.4 [skip ci] --- .../WindowsManifest/WindowsManifestMerger.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp b/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp index a85dcd2ae2859..cdd63686d4711 100644 --- a/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp +++ b/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp @@ -32,7 +32,6 @@ void WindowsManifestError::log(raw_ostream &OS) const { OS << Msg; } class WindowsManifestMerger::WindowsManifestMergerImpl { public: - ~WindowsManifestMergerImpl(); Error merge(MemoryBufferRef Manifest); std::unique_ptr getMergedManifest(); @@ -45,7 +44,7 @@ class WindowsManifestMerger::WindowsManifestMergerImpl { void operator()(xmlDoc *Ptr) { xmlFreeDoc(Ptr); } }; xmlDocPtr CombinedDoc = nullptr; - std::vector MergedDocs; + std::vector> MergedDocs; bool Merged = false; int BufferSize = 0; std::unique_ptr Buffer; @@ -611,11 +610,6 @@ static void checkAndStripPrefixes(xmlNodePtr Node, } } -WindowsManifestMerger::WindowsManifestMergerImpl::~WindowsManifestMergerImpl() { - for (auto &Doc : MergedDocs) - xmlFreeDoc(Doc); -} - Error WindowsManifestMerger::WindowsManifestMergerImpl::merge( MemoryBufferRef Manifest) { if (Merged) @@ -626,17 +620,17 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge( "attempted to merge empty manifest"); xmlSetGenericErrorFunc((void *)this, WindowsManifestMergerImpl::errorCallback); - xmlDocPtr ManifestXML = xmlReadMemory( + std::unique_ptr ManifestXML(xmlReadMemory( Manifest.getBufferStart(), Manifest.getBufferSize(), "manifest.xml", - nullptr, XML_PARSE_NOBLANKS | XML_PARSE_NODICT); + nullptr, XML_PARSE_NOBLANKS | XML_PARSE_NODICT)); xmlSetGenericErrorFunc(nullptr, nullptr); if (auto E = getParseError()) return E; - xmlNodePtr AdditionalRoot = xmlDocGetRootElement(ManifestXML); + xmlNodePtr AdditionalRoot = xmlDocGetRootElement(ManifestXML.get()); stripComments(AdditionalRoot); setAttributeNamespaces(AdditionalRoot); if (CombinedDoc == nullptr) { - CombinedDoc = ManifestXML; + CombinedDoc = ManifestXML.get(); } else { xmlNodePtr CombinedRoot = xmlDocGetRootElement(CombinedDoc); if (!xmlStringsEqual(CombinedRoot->name, AdditionalRoot->name) || @@ -648,7 +642,7 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge( return E; } } - MergedDocs.push_back(ManifestXML); + MergedDocs.push_back(std::move(ManifestXML)); return Error::success(); }