From dbba2eb82fcecbc8a202c3d1d0704f1831154992 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Fri, 24 Jan 2014 21:52:44 +0000 Subject: Fix c++03 build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200042 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-ar/llvm-ar.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'tools') 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 Members, - ArrayRef > Buffers, + ArrayRef Buffers, std::vector > &MemberOffsetRefs) { unsigned StartOffset = 0; unsigned MemberNum = 0; @@ -701,9 +701,9 @@ static void writeSymbolTable( for (ArrayRef::iterator I = Members.begin(), E = Members.end(); I != E; ++I, ++MemberNum) { - const OwningPtr &MemberBuffer = Buffers[MemberNum]; + MemoryBuffer *MemberBuffer = Buffers[MemberNum]; ErrorOr 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 > MemberOffsetRefs; - std::vector > MemberBuffers; + std::vector MemberBuffers; MemberBuffers.resize(NewMembers.size()); for (unsigned I = 0, N = NewMembers.size(); I < N; ++I) { - OwningPtr &MemberBuffer = MemberBuffers[I]; + OwningPtr 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 &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); -- cgit v1.2.3