summaryrefslogtreecommitdiff
path: root/COFF/Driver.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-08-20 21:35:55 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-08-20 21:35:55 +0000
commit1e52e898a35b86ecd41b7040085e21d3a140a115 (patch)
tree97a1a3c25b38699a99c5f89badc2bf004cf1241d /COFF/Driver.cpp
parentf1e1c239e31b467e17f1648b1f524fc9ab5b431a (diff)
Notes
Diffstat (limited to 'COFF/Driver.cpp')
-rw-r--r--COFF/Driver.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/COFF/Driver.cpp b/COFF/Driver.cpp
index d7af50b9318fc..7214d12bde8aa 100644
--- a/COFF/Driver.cpp
+++ b/COFF/Driver.cpp
@@ -184,8 +184,10 @@ void LinkerDriver::addBuffer(std::unique_ptr<MemoryBuffer> mb,
if (wholeArchive) {
std::unique_ptr<Archive> file =
CHECK(Archive::create(mbref), filename + ": failed to parse archive");
+ Archive *archive = file.get();
+ make<std::unique_ptr<Archive>>(std::move(file)); // take ownership
- for (MemoryBufferRef m : getArchiveMembers(file.get()))
+ for (MemoryBufferRef m : getArchiveMembers(archive))
addArchiveBuffer(m, "<whole-archive>", filename, 0);
return;
}