X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FObject%2FMachOUniversal.cpp;h=ece652b4c095ea63b500fd47dfa91f4ed9e8868a;hb=285133714f0d995e0e14a77e23a0abe5dfc32d17;hp=330454ac5a7b450e13ab4b82d1548e0841681759;hpb=b138caba43b5c1a370bc9cf52d815c44bdf90159;p=oota-llvm.git diff --git a/lib/Object/MachOUniversal.cpp b/lib/Object/MachOUniversal.cpp index 330454ac5a7..ece652b4c09 100644 --- a/lib/Object/MachOUniversal.cpp +++ b/lib/Object/MachOUniversal.cpp @@ -86,12 +86,13 @@ std::error_code MachOUniversalBinary::ObjectForArch::getAsArchive( StringRef ParentData = Parent->getData(); StringRef ObjectData = ParentData.substr(Header.offset, Header.size); std::string ObjectName = Parent->getFileName().str(); - MemoryBuffer *ObjBuffer = MemoryBuffer::getMemBuffer( - ObjectData, ObjectName, false); - ErrorOr Obj = Archive::create(ObjBuffer); + std::unique_ptr ObjBuffer( + MemoryBuffer::getMemBuffer(ObjectData, ObjectName, false)); + ErrorOr> Obj = + Archive::create(std::move(ObjBuffer)); if (std::error_code EC = Obj.getError()) return EC; - Result.reset(Obj.get()); + Result = std::move(Obj.get()); return object_error::success; } return object_error::parse_failed; @@ -100,19 +101,20 @@ std::error_code MachOUniversalBinary::ObjectForArch::getAsArchive( void MachOUniversalBinary::anchor() { } ErrorOr -MachOUniversalBinary::create(MemoryBuffer *Source) { +MachOUniversalBinary::create(std::unique_ptr Source) { std::error_code EC; std::unique_ptr Ret( - new MachOUniversalBinary(Source, EC)); + new MachOUniversalBinary(std::move(Source), EC)); if (EC) return EC; return Ret.release(); } -MachOUniversalBinary::MachOUniversalBinary(MemoryBuffer *Source, +MachOUniversalBinary::MachOUniversalBinary(std::unique_ptr Source, std::error_code &ec) - : Binary(Binary::ID_MachOUniversalBinary, Source), NumberOfObjects(0) { - if (Source->getBufferSize() < sizeof(MachO::fat_header)) { + : Binary(Binary::ID_MachOUniversalBinary, std::move(Source)), + NumberOfObjects(0) { + if (Data->getBufferSize() < sizeof(MachO::fat_header)) { ec = object_error::invalid_file_type; return; }