From 3576b74bb9a15d55f9de80206af9d24d78cfef3a Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Mon, 19 Apr 2010 16:15:31 +0000 Subject: Don't write into MemoryBuffers. llvm-svn: 101783 --- llvm/lib/Archive/ArchiveReader.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'llvm/lib/Archive/ArchiveReader.cpp') diff --git a/llvm/lib/Archive/ArchiveReader.cpp b/llvm/lib/Archive/ArchiveReader.cpp index cbd0bb39..05d32de 100644 --- a/llvm/lib/Archive/ArchiveReader.cpp +++ b/llvm/lib/Archive/ArchiveReader.cpp @@ -348,9 +348,8 @@ Archive::getAllModules(std::vector& Modules, std::string FullMemberName = archPath.str() + "(" + I->getPath().str() + ")"; MemoryBuffer *Buffer = - MemoryBuffer::getNewMemBuffer(I->getSize(), FullMemberName.c_str()); - memcpy(const_cast(Buffer->getBufferStart()), - I->getData(), I->getSize()); + MemoryBuffer::getMemBufferCopy(StringRef(I->getData(), I->getSize()), + FullMemberName.c_str()); Module *M = ParseBitcodeFile(Buffer, Context, ErrMessage); delete Buffer; @@ -488,10 +487,9 @@ Archive::findModuleDefiningSymbol(const std::string& symbol, // Now, load the bitcode module to get the Module. std::string FullMemberName = archPath.str() + "(" + mbr->getPath().str() + ")"; - MemoryBuffer *Buffer =MemoryBuffer::getNewMemBuffer(mbr->getSize(), - FullMemberName.c_str()); - memcpy(const_cast(Buffer->getBufferStart()), - mbr->getData(), mbr->getSize()); + MemoryBuffer *Buffer = + MemoryBuffer::getMemBufferCopy(StringRef(mbr->getData(), mbr->getSize()), + FullMemberName.c_str()); Module *m = getLazyBitcodeModule(Buffer, Context, ErrMsg); if (!m) @@ -540,8 +538,8 @@ Archive::findModulesDefiningSymbols(std::set& symbols, std::string FullMemberName = archPath.str() + "(" + mbr->getPath().str() + ")"; Module* M = - GetBitcodeSymbols((const unsigned char*)At, mbr->getSize(), - FullMemberName, Context, symbols, error); + GetBitcodeSymbols(At, mbr->getSize(), FullMemberName, Context, + symbols, error); if (M) { // Insert the module's symbols into the symbol table @@ -618,9 +616,8 @@ bool Archive::isBitcodeArchive() { archPath.str() + "(" + I->getPath().str() + ")"; MemoryBuffer *Buffer = - MemoryBuffer::getNewMemBuffer(I->getSize(), FullMemberName.c_str()); - memcpy(const_cast(Buffer->getBufferStart()), - I->getData(), I->getSize()); + MemoryBuffer::getMemBufferCopy(StringRef(I->getData(), I->getSize()), + FullMemberName.c_str()); Module *M = ParseBitcodeFile(Buffer, Context); delete Buffer; if (!M) -- cgit v1.1