On Sat, Jan 9, 2016 at 4:56 PM, Daniel Jasper via cfe-commits <cfe-commits@lists.llvm.org> wrote: > Author: djasper > Date: Sat Jan 9 09:56:57 2016 > New Revision: 257259 > > URL: http://llvm.org/viewvc/llvm-project?rev=257259&view=rev > Log: > Make clang::format::reformat work with non 0-terminated strings. > > Modified: > cfe/trunk/lib/Format/Format.cpp > > Modified: cfe/trunk/lib/Format/Format.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=257259&r1=257258&r2=257259&view=diff > ============================================================================== > --- cfe/trunk/lib/Format/Format.cpp (original) > +++ cfe/trunk/lib/Format/Format.cpp Sat Jan 9 09:56:57 2016 > @@ -1902,8 +1902,9 @@ tooling::Replacements reformat(const For > IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs), > new DiagnosticOptions); > SourceManager SourceMgr(Diagnostics, Files); > - InMemoryFileSystem->addFile(FileName, 0, > - llvm::MemoryBuffer::getMemBuffer(Code, > FileName)); > + InMemoryFileSystem->addFile( > + FileName, 0, llvm::MemoryBuffer::getMemBuffer( > + Code, FileName, /*RequiresNullTerminator=*/false));
Hmm, Clang's Lexer depends on the null terminator at EOF. I'd expect this change to create invalid memory reads (asan) for cases like formatting "// foo" without a trailing newline. - Ben > FileID ID = SourceMgr.createFileID(Files.getFile(FileName), > SourceLocation(), > clang::SrcMgr::C_User); > SourceLocation StartOfFile = SourceMgr.getLocForStartOfFile(ID); > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits