diff options
author | Gabor Horvath <xazax.hun@gmail.com> | 2016-03-30 10:08:59 +0000 |
---|---|---|
committer | Gabor Horvath <xazax.hun@gmail.com> | 2016-03-30 10:08:59 +0000 |
commit | b780c44eeca9a1724c53adb82501587a1fcd9750 (patch) | |
tree | 0cfc03c360db808828a70b725925f21c7ffea153 /clang/lib | |
parent | 021ccdb7cd1050d9100481017fd18fec26a4e916 (diff) | |
download | bcm5719-llvm-b780c44eeca9a1724c53adb82501587a1fcd9750.tar.gz bcm5719-llvm-b780c44eeca9a1724c53adb82501587a1fcd9750.zip |
[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
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/IssueHash.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/IssueHash.cpp b/clang/lib/StaticAnalyzer/Core/IssueHash.cpp index c352f12111f..bd5c81179ad 100644 --- a/clang/lib/StaticAnalyzer/Core/IssueHash.cpp +++ b/clang/lib/StaticAnalyzer/Core/IssueHash.cpp @@ -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 = |