From: Vitaly Buka Date: Thu, 31 Aug 2017 02:38:58 +0000 (+0000) Subject: llvm-mt: Fix release of OutputDoc X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=99469895318be8283586e314b145d1552cb687c6;p=llvm llvm-mt: Fix release of OutputDoc Summary: xmlDoc needs to be released with xmlFreeDoc. Reset root element before release to avoid release of CombinedRoot owned by CombinedDoc, Reviewers: ecbeckmann, rnk, zturner, ruiu Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D37321 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312207 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/WindowsManifest/WindowsManifestMerger.cpp b/lib/WindowsManifest/WindowsManifestMerger.cpp index 91547c98469..da968c4ae1a 100644 --- a/lib/WindowsManifest/WindowsManifestMerger.cpp +++ b/lib/WindowsManifest/WindowsManifestMerger.cpp @@ -652,11 +652,13 @@ WindowsManifestMerger::WindowsManifestMergerImpl::getMergedManifest() { xmlNodePtr CombinedRoot = xmlDocGetRootElement(CombinedDoc); std::vector RequiredPrefixes; checkAndStripPrefixes(CombinedRoot, RequiredPrefixes); - std::unique_ptr OutputDoc(xmlNewDoc((const unsigned char *)"1.0")); + std::unique_ptr OutputDoc( + xmlNewDoc((const unsigned char *)"1.0"), &xmlFreeDoc); xmlDocSetRootElement(OutputDoc.get(), CombinedRoot); xmlKeepBlanksDefault(0); xmlDocDumpFormatMemoryEnc(OutputDoc.get(), &XmlBuff, &BufferSize, "UTF-8", 1); + xmlDocSetRootElement(OutputDoc.get(), nullptr); } if (BufferSize == 0) return nullptr;