diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-23 22:00:37 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-23 22:00:37 +0000 |
commit | 6304e941082cc97240856ff602f4ae0dfcc08230 (patch) | |
tree | b41276453a57d065caf55cb342366b79ac81b11b /llvm/lib/Object/ObjectFile.cpp | |
parent | aed5c966849821b5368f0e742439bae579f42da3 (diff) | |
download | bcm5719-llvm-6304e941082cc97240856ff602f4ae0dfcc08230.tar.gz bcm5719-llvm-6304e941082cc97240856ff602f4ae0dfcc08230.zip |
Pass a std::unique_ptr& to the create??? methods is lib/Object.
This makes the buffer ownership on error conditions very natural. The buffer
is only moved out of the argument if an object is constructed that now
owns the buffer.
llvm-svn: 211546
Diffstat (limited to 'llvm/lib/Object/ObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/ObjectFile.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Object/ObjectFile.cpp b/llvm/lib/Object/ObjectFile.cpp index 738ea5fbb92..ee2680e6ba0 100644 --- a/llvm/lib/Object/ObjectFile.cpp +++ b/llvm/lib/Object/ObjectFile.cpp @@ -45,8 +45,9 @@ section_iterator ObjectFile::getRelocatedSection(DataRefImpl Sec) const { return section_iterator(SectionRef(Sec, this)); } -ErrorOr<ObjectFile *> ObjectFile::createObjectFile(MemoryBuffer *Object, - sys::fs::file_magic Type) { +ErrorOr<ObjectFile *> +ObjectFile::createObjectFile(std::unique_ptr<MemoryBuffer> &Object, + sys::fs::file_magic Type) { if (Type == sys::fs::file_magic::unknown) Type = sys::fs::identify_magic(Object->getBuffer()); @@ -76,7 +77,7 @@ ErrorOr<ObjectFile *> ObjectFile::createObjectFile(MemoryBuffer *Object, case sys::fs::file_magic::coff_object: case sys::fs::file_magic::coff_import_library: case sys::fs::file_magic::pecoff_executable: - return createCOFFObjectFile(Object); + return createCOFFObjectFile(Object.release()); } llvm_unreachable("Unexpected Object File Type"); } @@ -85,5 +86,5 @@ ErrorOr<ObjectFile *> ObjectFile::createObjectFile(StringRef ObjectPath) { std::unique_ptr<MemoryBuffer> File; if (std::error_code EC = MemoryBuffer::getFile(ObjectPath, File)) return EC; - return createObjectFile(File.release()); + return createObjectFile(File); } |