diff options
Diffstat (limited to 'llvm/lib/Object/MachOUniversal.cpp')
-rw-r--r-- | llvm/lib/Object/MachOUniversal.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/llvm/lib/Object/MachOUniversal.cpp b/llvm/lib/Object/MachOUniversal.cpp index 223dfef8d29..0fe06b46b50 100644 --- a/llvm/lib/Object/MachOUniversal.cpp +++ b/llvm/lib/Object/MachOUniversal.cpp @@ -81,16 +81,26 @@ error_code MachOUniversalBinary::ObjectForArch::getAsObjectFile( Triple::getArchTypeName(MachOObjectFile::getArch(Header.cputype)); MemoryBuffer *ObjBuffer = MemoryBuffer::getMemBuffer( ObjectData, ObjectName, false); - if (ObjectFile *Obj = ObjectFile::createMachOObjectFile(ObjBuffer)) { - Result.reset(Obj); - return object_error::success; - } + ErrorOr<ObjectFile *> Obj = ObjectFile::createMachOObjectFile(ObjBuffer); + if (error_code EC = Obj.getError()) + return EC; + Result.reset(Obj.get()); + return object_error::success; } return object_error::parse_failed; } void MachOUniversalBinary::anchor() { } +ErrorOr<MachOUniversalBinary *> +MachOUniversalBinary::create(MemoryBuffer *Source) { + error_code EC; + OwningPtr<MachOUniversalBinary> Ret(new MachOUniversalBinary(Source, EC)); + if (EC) + return EC; + return Ret.take(); +} + MachOUniversalBinary::MachOUniversalBinary(MemoryBuffer *Source, error_code &ec) : Binary(Binary::ID_MachOUniversalBinary, Source), |