- ErrorOr<ObjectFile*> ObjOrErr(ObjectFile::createObjectFile(unwrap(MemBuf)));
- ObjectFile *Obj = ObjOrErr ? ObjOrErr.get() : 0;
- return wrap(Obj);
+ std::unique_ptr<MemoryBuffer> Buf(unwrap(MemBuf));
+ ErrorOr<std::unique_ptr<ObjectFile>> ObjOrErr(
+ ObjectFile::createObjectFile(Buf->getMemBufferRef()));
+ std::unique_ptr<ObjectFile> Obj;
+ if (ObjOrErr)
+ Obj = std::move(ObjOrErr.get());
+ auto *Ret = new OwningBinary<ObjectFile>(std::move(Obj), std::move(Buf));
+ return wrap(Ret);