[analyzer] Fix an assertion fail in hash generation.

In case the (uniqueing) location of the diagnostic is in a line that only
contains whitespaces there was an assertion fail during issue hash generation.

Unfortunately I am unable to reproduce this error with the built in checkers, 
so no there is no failing test case with this patch. It would be possible to
write a debug checker for that purpuse but it does not worth the effort.

Differential Revision: http://reviews.llvm.org/D18210

llvm-svn: 264851
This commit is contained in:
Gabor Horvath 2016-03-30 10:08:59 +00:00
parent 021ccdb7cd
commit b780c44eec
1 changed files with 5 additions and 2 deletions

View File

@ -132,8 +132,11 @@ static std::string NormalizeLine(const SourceManager &SM, FullSourceLoc &L,
StringRef Str = GetNthLineOfFile(SM.getBuffer(L.getFileID(), L),
L.getExpansionLineNumber());
unsigned col = Str.find_first_not_of(Whitespaces);
col++;
StringRef::size_type col = Str.find_first_not_of(Whitespaces);
if (col == StringRef::npos)
col = 1; // The line only contains whitespace.
else
col++;
SourceLocation StartOfLine =
SM.translateLineCol(SM.getFileID(L), L.getExpansionLineNumber(), col);
llvm::MemoryBuffer *Buffer =