Skip to content

Commit

Permalink
Revert "[llvm-mt] Use XmlDeleter to free xmlFreeDoc" (#128578)
Browse files Browse the repository at this point in the history
Reverts #128472

Breaks build bots.
  • Loading branch information
vitalybuka authored Feb 24, 2025
1 parent 23aca2f commit e063365
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions llvm/lib/WindowsManifest/WindowsManifestMerger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ void WindowsManifestError::log(raw_ostream &OS) const { OS << Msg; }

class WindowsManifestMerger::WindowsManifestMergerImpl {
public:
~WindowsManifestMergerImpl();
Error merge(MemoryBufferRef Manifest);
std::unique_ptr<MemoryBuffer> getMergedManifest();

Expand All @@ -44,7 +45,7 @@ class WindowsManifestMerger::WindowsManifestMergerImpl {
void operator()(xmlDoc *Ptr) { xmlFreeDoc(Ptr); }
};
xmlDocPtr CombinedDoc = nullptr;
std::vector<std::unique_ptr<xmlDoc, XmlDeleter>> MergedDocs;
std::vector<xmlDocPtr> MergedDocs;
bool Merged = false;
int BufferSize = 0;
std::unique_ptr<xmlChar, XmlDeleter> Buffer;
Expand Down Expand Up @@ -610,6 +611,11 @@ static void checkAndStripPrefixes(xmlNodePtr Node,
}
}

WindowsManifestMerger::WindowsManifestMergerImpl::~WindowsManifestMergerImpl() {
for (auto &Doc : MergedDocs)
xmlFreeDoc(Doc);
}

Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
MemoryBufferRef Manifest) {
if (Merged)
Expand All @@ -620,17 +626,17 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
"attempted to merge empty manifest");
xmlSetGenericErrorFunc((void *)this,
WindowsManifestMergerImpl::errorCallback);
std::unique_ptr<xmlDoc, XmlDeleter> ManifestXML(xmlReadMemory(
xmlDocPtr 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.get());
xmlNodePtr AdditionalRoot = xmlDocGetRootElement(ManifestXML);
stripComments(AdditionalRoot);
setAttributeNamespaces(AdditionalRoot);
if (CombinedDoc == nullptr) {
CombinedDoc = ManifestXML.get();
CombinedDoc = ManifestXML;
} else {
xmlNodePtr CombinedRoot = xmlDocGetRootElement(CombinedDoc);
if (!xmlStringsEqual(CombinedRoot->name, AdditionalRoot->name) ||
Expand All @@ -642,7 +648,7 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
return E;
}
}
MergedDocs.push_back(std::move(ManifestXML));
MergedDocs.push_back(ManifestXML);
return Error::success();
}

Expand Down

0 comments on commit e063365

Please sign in to comment.