diff options
| -rw-r--r-- | lld/lib/ReaderWriter/FileArchive.cpp | 8 |
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 ®, 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(); } |

