From 6304e941082cc97240856ff602f4ae0dfcc08230 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 23 Jun 2014 22:00:37 +0000 Subject: 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 --- llvm/lib/Object/ObjectFile.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'llvm/lib/Object/ObjectFile.cpp') 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::createObjectFile(MemoryBuffer *Object, - sys::fs::file_magic Type) { +ErrorOr +ObjectFile::createObjectFile(std::unique_ptr &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::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::createObjectFile(StringRef ObjectPath) { std::unique_ptr File; if (std::error_code EC = MemoryBuffer::getFile(ObjectPath, File)) return EC; - return createObjectFile(File.release()); + return createObjectFile(File); } -- cgit v1.2.3