Skip to content

Commit e063365

Browse files
authored
Revert "[llvm-mt] Use XmlDeleter to free xmlFreeDoc" (#128578)
Reverts #128472 Breaks build bots.
1 parent 23aca2f commit e063365

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

llvm/lib/WindowsManifest/WindowsManifestMerger.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ void WindowsManifestError::log(raw_ostream &OS) const { OS << Msg; }
3232

3333
class WindowsManifestMerger::WindowsManifestMergerImpl {
3434
public:
35+
~WindowsManifestMergerImpl();
3536
Error merge(MemoryBufferRef Manifest);
3637
std::unique_ptr<MemoryBuffer> getMergedManifest();
3738

@@ -44,7 +45,7 @@ class WindowsManifestMerger::WindowsManifestMergerImpl {
4445
void operator()(xmlDoc *Ptr) { xmlFreeDoc(Ptr); }
4546
};
4647
xmlDocPtr CombinedDoc = nullptr;
47-
std::vector<std::unique_ptr<xmlDoc, XmlDeleter>> MergedDocs;
48+
std::vector<xmlDocPtr> MergedDocs;
4849
bool Merged = false;
4950
int BufferSize = 0;
5051
std::unique_ptr<xmlChar, XmlDeleter> Buffer;
@@ -610,6 +611,11 @@ static void checkAndStripPrefixes(xmlNodePtr Node,
610611
}
611612
}
612613

614+
WindowsManifestMerger::WindowsManifestMergerImpl::~WindowsManifestMergerImpl() {
615+
for (auto &Doc : MergedDocs)
616+
xmlFreeDoc(Doc);
617+
}
618+
613619
Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
614620
MemoryBufferRef Manifest) {
615621
if (Merged)
@@ -620,17 +626,17 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
620626
"attempted to merge empty manifest");
621627
xmlSetGenericErrorFunc((void *)this,
622628
WindowsManifestMergerImpl::errorCallback);
623-
std::unique_ptr<xmlDoc, XmlDeleter> ManifestXML(xmlReadMemory(
629+
xmlDocPtr ManifestXML = xmlReadMemory(
624630
Manifest.getBufferStart(), Manifest.getBufferSize(), "manifest.xml",
625-
nullptr, XML_PARSE_NOBLANKS | XML_PARSE_NODICT));
631+
nullptr, XML_PARSE_NOBLANKS | XML_PARSE_NODICT);
626632
xmlSetGenericErrorFunc(nullptr, nullptr);
627633
if (auto E = getParseError())
628634
return E;
629-
xmlNodePtr AdditionalRoot = xmlDocGetRootElement(ManifestXML.get());
635+
xmlNodePtr AdditionalRoot = xmlDocGetRootElement(ManifestXML);
630636
stripComments(AdditionalRoot);
631637
setAttributeNamespaces(AdditionalRoot);
632638
if (CombinedDoc == nullptr) {
633-
CombinedDoc = ManifestXML.get();
639+
CombinedDoc = ManifestXML;
634640
} else {
635641
xmlNodePtr CombinedRoot = xmlDocGetRootElement(CombinedDoc);
636642
if (!xmlStringsEqual(CombinedRoot->name, AdditionalRoot->name) ||
@@ -642,7 +648,7 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
642648
return E;
643649
}
644650
}
645-
MergedDocs.push_back(std::move(ManifestXML));
651+
MergedDocs.push_back(ManifestXML);
646652
return Error::success();
647653
}
648654

0 commit comments

Comments
 (0)