[dsymutil] Refactor BinaryHolder internals. NFC
authorFrederic Riss <friss@apple.com>
Fri, 24 Jul 2015 06:40:59 +0000 (06:40 +0000)
committerFrederic Riss <friss@apple.com>
Fri, 24 Jul 2015 06:40:59 +0000 (06:40 +0000)
Call a helper that resets all the internal state of the BinaryHolder
when we change the underlying memory buffer. Makes a followup patch
a tiny bit smaller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243094 91177308-0d34-0410-b5e6-96231b3b80d8

tools/dsymutil/BinaryHolder.cpp
tools/dsymutil/BinaryHolder.h

index 49fe901b41950112b5d3f0722ed51c9309246c11..1774cf21e71f593a93732cae4a859d92b2f62e7a 100644 (file)
 namespace llvm {
 namespace dsymutil {
 
+void BinaryHolder::changeBackingMemoryBuffer(
+    std::unique_ptr<MemoryBuffer> &&Buf) {
+  CurrentArchive.reset();
+  CurrentObjectFile.reset();
+
+  CurrentMemoryBuffer = std::move(Buf);
+}
+
 ErrorOr<MemoryBufferRef>
 BinaryHolder::GetMemoryBufferForFile(StringRef Filename,
                                      sys::TimeValue Timestamp) {
@@ -44,10 +52,9 @@ BinaryHolder::GetMemoryBufferForFile(StringRef Filename,
   if (auto Err = ErrOrFile.getError())
     return Err;
 
+  changeBackingMemoryBuffer(std::move(*ErrOrFile));
   if (Verbose)
     outs() << "\tloaded file.\n";
-  CurrentArchive.reset();
-  CurrentMemoryBuffer = std::move(ErrOrFile.get());
   return CurrentMemoryBuffer->getMemBufferRef();
 }
 
@@ -93,12 +100,14 @@ BinaryHolder::MapArchiveAndGetMemberBuffer(StringRef Filename,
 
   if (Verbose)
     outs() << "\topened new archive '" << ArchiveFilename << "'\n";
-  auto ErrOrArchive = object::Archive::create((*ErrOrBuff)->getMemBufferRef());
+
+  changeBackingMemoryBuffer(std::move(*ErrOrBuff));
+  auto ErrOrArchive =
+      object::Archive::create(CurrentMemoryBuffer->getMemBufferRef());
   if (auto Err = ErrOrArchive.getError())
     return Err;
 
   CurrentArchive = std::move(*ErrOrArchive);
-  CurrentMemoryBuffer = std::move(*ErrOrBuff);
 
   return GetArchiveMemberBuffer(Filename, Timestamp);
 }
index 84c07ce0c4bccd859144abc303706f209b87992f..c072acac2b2eee2ca173252a8d68001986889e4c 100644 (file)
@@ -67,6 +67,8 @@ class BinaryHolder {
   ErrorOr<MemoryBufferRef> GetMemoryBufferForFile(StringRef Filename,
                                                   sys::TimeValue Timestamp);
 
+  void changeBackingMemoryBuffer(std::unique_ptr<MemoryBuffer> &&MemBuf);
+
 public:
   BinaryHolder(bool Verbose) : Verbose(Verbose) {}