diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-24 21:52:44 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-01-24 21:52:44 +0000 |
commit | dbba2eb82fcecbc8a202c3d1d0704f1831154992 (patch) | |
tree | 50bb9859ab46f7dc0ac4816252a1b7a958fb48d3 /tools | |
parent | 584fe2db6ad04974b569da2d90860cc2b75c025b (diff) | |
download | llvm-dbba2eb82fcecbc8a202c3d1d0704f1831154992.tar.gz llvm-dbba2eb82fcecbc8a202c3d1d0704f1831154992.tar.bz2 llvm-dbba2eb82fcecbc8a202c3d1d0704f1831154992.tar.xz |
Fix c++03 build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200042 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/llvm-ar/llvm-ar.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index d8c75f2fae..944cce408f 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -692,7 +692,7 @@ static void writeStringTable(raw_fd_ostream &Out, static void writeSymbolTable( raw_fd_ostream &Out, ArrayRef<NewArchiveIterator> Members, - ArrayRef<OwningPtr<MemoryBuffer> > Buffers, + ArrayRef<MemoryBuffer *> Buffers, std::vector<std::pair<unsigned, unsigned> > &MemberOffsetRefs) { unsigned StartOffset = 0; unsigned MemberNum = 0; @@ -701,9 +701,9 @@ static void writeSymbolTable( for (ArrayRef<NewArchiveIterator>::iterator I = Members.begin(), E = Members.end(); I != E; ++I, ++MemberNum) { - const OwningPtr<MemoryBuffer> &MemberBuffer = Buffers[MemberNum]; + MemoryBuffer *MemberBuffer = Buffers[MemberNum]; ErrorOr<object::ObjectFile *> ObjOrErr = - object::ObjectFile::createObjectFile(MemberBuffer.get(), false); + object::ObjectFile::createObjectFile(MemberBuffer, false); if (!ObjOrErr) continue; // FIXME: check only for "not an object file" errors. object::ObjectFile *Obj = ObjOrErr.get(); @@ -778,11 +778,11 @@ static void performWriteOperation(ArchiveOperation Operation, std::vector<std::pair<unsigned, unsigned> > MemberOffsetRefs; - std::vector<OwningPtr<MemoryBuffer> > MemberBuffers; + std::vector<MemoryBuffer *> MemberBuffers; MemberBuffers.resize(NewMembers.size()); for (unsigned I = 0, N = NewMembers.size(); I < N; ++I) { - OwningPtr<MemoryBuffer> &MemberBuffer = MemberBuffers[I]; + OwningPtr<MemoryBuffer> MemberBuffer; NewArchiveIterator &Member = NewMembers[I]; if (Member.isNewMember()) { @@ -797,6 +797,7 @@ static void performWriteOperation(ArchiveOperation Operation, object::Archive::child_iterator OldMember = Member.getOld(); failIfError(OldMember->getMemoryBuffer(MemberBuffer)); } + MemberBuffers[I] = MemberBuffer.take(); } if (Symtab) { @@ -824,7 +825,7 @@ static void performWriteOperation(ArchiveOperation Operation, } Out.seek(Pos); - const OwningPtr<MemoryBuffer> &File = MemberBuffers[MemberNum]; + const MemoryBuffer *File = MemberBuffers[MemberNum]; if (I->isNewMember()) { const char *FileName = I->getNew(); const sys::fs::file_status &Status = I->getStatus(); @@ -859,6 +860,11 @@ static void performWriteOperation(ArchiveOperation Operation, if (Out.tell() % 2) Out << '\n'; } + + for (unsigned I = 0, N = MemberBuffers.size(); I < N; ++I) { + delete MemberBuffers[I]; + } + Output.keep(); Out.close(); sys::fs::rename(TemporaryOutput, ArchiveName); |