[llvm] e063365 - Revert "[llvm-mt] Use XmlDeleter to free xmlFreeDoc" (#128578)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 24 13:07:46 PST 2025
Author: Vitaly Buka
Date: 2025-02-24T13:07:42-08:00
New Revision: e063365a9732551b2d7b6c2b0d81e79d224a61e8
URL: https://github.com/llvm/llvm-project/commit/e063365a9732551b2d7b6c2b0d81e79d224a61e8
DIFF: https://github.com/llvm/llvm-project/commit/e063365a9732551b2d7b6c2b0d81e79d224a61e8.diff
LOG: Revert "[llvm-mt] Use XmlDeleter to free xmlFreeDoc" (#128578)
Reverts llvm/llvm-project#128472
Breaks build bots.
Added:
Modified:
llvm/lib/WindowsManifest/WindowsManifestMerger.cpp
Removed:
################################################################################
diff --git a/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp b/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp
index cdd63686d4711..a85dcd2ae2859 100644
--- a/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp
+++ b/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp
@@ -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();
@@ -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;
@@ -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)
@@ -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) ||
@@ -642,7 +648,7 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
return E;
}
}
- MergedDocs.push_back(std::move(ManifestXML));
+ MergedDocs.push_back(ManifestXML);
return Error::success();
}
More information about the llvm-commits
mailing list