Skip to content

Commit 0c15e85

Browse files
committed
[𝘀𝗽𝗿] changes introduced through rebase
Created using spr 1.3.4 [skip ci]
1 parent 53c08df commit 0c15e85

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

llvm/lib/WindowsManifest/WindowsManifestMerger.cpp

Lines changed: 15 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

@@ -43,8 +44,11 @@ class WindowsManifestMerger::WindowsManifestMergerImpl {
4344
void operator()(xmlChar *Ptr) { xmlFree(Ptr); }
4445
void operator()(xmlDoc *Ptr) { xmlFreeDoc(Ptr); }
4546
};
47+
48+
49+
4650
xmlDocPtr CombinedDoc = nullptr;
47-
std::vector<std::unique_ptr<xmlDoc, XmlDeleter>> MergedDocs;
51+
std::vector<xmlDocPtr> MergedDocs;
4852
bool Merged = false;
4953
int BufferSize = 0;
5054
std::unique_ptr<xmlChar, XmlDeleter> Buffer;
@@ -610,6 +614,11 @@ static void checkAndStripPrefixes(xmlNodePtr Node,
610614
}
611615
}
612616

617+
WindowsManifestMerger::WindowsManifestMergerImpl::~WindowsManifestMergerImpl() {
618+
for (auto &Doc : MergedDocs)
619+
xmlFreeDoc(Doc);
620+
}
621+
613622
Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
614623
MemoryBufferRef Manifest) {
615624
if (Merged)
@@ -620,17 +629,17 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
620629
"attempted to merge empty manifest");
621630
xmlSetGenericErrorFunc((void *)this,
622631
WindowsManifestMergerImpl::errorCallback);
623-
std::unique_ptr<xmlDoc, XmlDeleter> ManifestXML(xmlReadMemory(
632+
xmlDocPtr ManifestXML = xmlReadMemory(
624633
Manifest.getBufferStart(), Manifest.getBufferSize(), "manifest.xml",
625-
nullptr, XML_PARSE_NOBLANKS | XML_PARSE_NODICT));
634+
nullptr, XML_PARSE_NOBLANKS | XML_PARSE_NODICT);
626635
xmlSetGenericErrorFunc(nullptr, nullptr);
627636
if (auto E = getParseError())
628637
return E;
629-
xmlNodePtr AdditionalRoot = xmlDocGetRootElement(ManifestXML.get());
638+
xmlNodePtr AdditionalRoot = xmlDocGetRootElement(ManifestXML);
630639
stripComments(AdditionalRoot);
631640
setAttributeNamespaces(AdditionalRoot);
632641
if (CombinedDoc == nullptr) {
633-
CombinedDoc = ManifestXML.get();
642+
CombinedDoc = ManifestXML;
634643
} else {
635644
xmlNodePtr CombinedRoot = xmlDocGetRootElement(CombinedDoc);
636645
if (!xmlStringsEqual(CombinedRoot->name, AdditionalRoot->name) ||
@@ -642,7 +651,7 @@ Error WindowsManifestMerger::WindowsManifestMergerImpl::merge(
642651
return E;
643652
}
644653
}
645-
MergedDocs.push_back(std::move(ManifestXML));
654+
MergedDocs.push_back(ManifestXML);
646655
return Error::success();
647656
}
648657

0 commit comments

Comments
 (0)