[lld] r194187 - [mach-o] fix memory ownership in test case

Nick Kledzik kledzik at apple.com
Wed Nov 6 18:56:54 PST 2013


Author: kledzik
Date: Wed Nov  6 20:56:53 2013
New Revision: 194187

URL: http://llvm.org/viewvc/llvm-project?rev=194187&view=rev
Log:
[mach-o] fix memory ownership in test case

Modified:
    lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp

Modified: lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp?rev=194187&r1=194186&r2=194187&view=diff
==============================================================================
--- lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp (original)
+++ lld/trunk/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp Wed Nov  6 20:56:53 2013
@@ -29,21 +29,22 @@ using llvm::error_code;
 using namespace llvm::MachO;
 using namespace lld::mach_o::normalized;
 
+// Parses binary mach-o file at specified path and returns
+// ownership of buffer to mb parameter and ownership of
+// Normalized file to nf parameter.
+static void 
+fromBinary(StringRef path, std::unique_ptr<MemoryBuffer> &mb, 
+                           std::unique_ptr<NormalizedFile> &nf) {
 
-static std::unique_ptr<NormalizedFile> 
-fromBinary(StringRef path) {
-
-  OwningPtr<MemoryBuffer> result;
-  error_code ec = MemoryBuffer::getFile(path, result);
+  OwningPtr<MemoryBuffer> opmb;
+  error_code ec = MemoryBuffer::getFile(path, opmb);
   EXPECT_FALSE(ec);
-  
+  mb.reset(opmb.take());
 
-  
-  std::unique_ptr<MemoryBuffer> mb(result.take());
   ErrorOr<std::unique_ptr<NormalizedFile>> r 
                                     = lld::mach_o::normalized::readBinary(mb);
   EXPECT_FALSE(!r);
-  return std::move(*r);
+  nf.reset(r->release());
 }
 
 
@@ -155,7 +156,11 @@ TEST(BinaryWriterTest, obj_relocs_x86_64
     ec = writeBinary(f, tmpFl);
     EXPECT_FALSE(ec);
   }
-  std::unique_ptr<NormalizedFile> f2 = fromBinary(tmpFl);
+  
+  std::unique_ptr<MemoryBuffer> bufferOwner;
+  std::unique_ptr<NormalizedFile> f2;
+  fromBinary(tmpFl, bufferOwner, f2);
+
   EXPECT_EQ(lld::MachOLinkingContext::arch_x86_64, f2->arch);
   EXPECT_EQ(MH_OBJECT, f2->fileType);
   EXPECT_EQ(FileFlags(MH_SUBSECTIONS_VIA_SYMBOLS), f2->flags);
@@ -262,7 +267,10 @@ TEST(BinaryWriterTest, obj_relocs_x86) {
     ec = writeBinary(f, tmpFl);
     EXPECT_FALSE(ec);
   }
-  std::unique_ptr<NormalizedFile> f2 = fromBinary(tmpFl);
+  std::unique_ptr<MemoryBuffer> bufferOwner;
+  std::unique_ptr<NormalizedFile> f2;
+  fromBinary(tmpFl, bufferOwner, f2);
+
   EXPECT_EQ(lld::MachOLinkingContext::arch_x86, f2->arch);
   EXPECT_EQ(MH_OBJECT, f2->fileType);
   EXPECT_EQ(FileFlags(MH_SUBSECTIONS_VIA_SYMBOLS), f2->flags);
@@ -394,7 +402,10 @@ TEST(BinaryWriterTest, obj_relocs_armv7)
     ec = writeBinary(f, tmpFl);
     EXPECT_FALSE(ec);
   }
-  std::unique_ptr<NormalizedFile> f2 = fromBinary(tmpFl);
+  std::unique_ptr<MemoryBuffer> bufferOwner;
+  std::unique_ptr<NormalizedFile> f2;
+  fromBinary(tmpFl, bufferOwner, f2);
+
   EXPECT_EQ(lld::MachOLinkingContext::arch_armv7, f2->arch);
   EXPECT_EQ(MH_OBJECT, f2->fileType);
   EXPECT_EQ(FileFlags(MH_SUBSECTIONS_VIA_SYMBOLS), f2->flags);
@@ -546,7 +557,10 @@ TEST(BinaryWriterTest, obj_relocs_ppc) {
     ec = writeBinary(f, tmpFl);
     EXPECT_FALSE(ec);
   }
-  std::unique_ptr<NormalizedFile> f2 = fromBinary(tmpFl);
+  std::unique_ptr<MemoryBuffer> bufferOwner;
+  std::unique_ptr<NormalizedFile> f2;
+  fromBinary(tmpFl, bufferOwner, f2);
+
   EXPECT_EQ(lld::MachOLinkingContext::arch_ppc, f2->arch);
   EXPECT_EQ(MH_OBJECT, f2->fileType);
   EXPECT_EQ(FileFlags(MH_SUBSECTIONS_VIA_SYMBOLS), f2->flags);





More information about the llvm-commits mailing list