summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/lib/ReaderWriter/FileArchive.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/lld/lib/ReaderWriter/FileArchive.cpp b/lld/lib/ReaderWriter/FileArchive.cpp
index 529cbeacc43..82bfeb8fd36 100644
--- a/lld/lib/ReaderWriter/FileArchive.cpp
+++ b/lld/lib/ReaderWriter/FileArchive.cpp
@@ -215,12 +215,13 @@ public:
std::error_code
parseFile(std::unique_ptr<MemoryBuffer> &mb, const Registry &reg,
std::vector<std::unique_ptr<File>> &result) const override {
+ MemoryBuffer &buff = *mb;
// Make Archive object which will be owned by FileArchive object.
std::error_code ec;
- Archive *archive = new Archive(mb.get(), ec);
+ Archive *archive = new Archive(std::move(mb), ec);
if (ec)
return ec;
- StringRef path = mb->getBufferIdentifier();
+ StringRef path = buff.getBufferIdentifier();
// Construct FileArchive object.
std::unique_ptr<FileArchive> file(
new FileArchive(reg, archive, path, false, _logLoading));
@@ -228,9 +229,6 @@ public:
if (ec)
return ec;
- // Transfer ownership of memory buffer to Archive object.
- mb.release();
-
result.push_back(std::move(file));
return std::error_code();
}
OpenPOWER on IntegriCloud