[PATCH] D55125: [clang-tidy] Fix a false positive in misc-redundant-expression check
Alexander Kornienko via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 4 04:02:40 PST 2018
alexfh added inline comments.
================
Comment at: clang-tidy/misc/RedundantExpressionCheck.cpp:601
+static bool compareToks(Token &T1, Token &T2, const SourceManager &SM) {
+ if (T1.getLength() != T2.getLength())
----------------
Should this function compare token kinds first?
================
Comment at: clang-tidy/misc/RedundantExpressionCheck.cpp:602
+static bool compareToks(Token &T1, Token &T2, const SourceManager &SM) {
+ if (T1.getLength() != T2.getLength())
+ return false;
----------------
`Token::getLength()` will assert-fail for annotation tokens.
================
Comment at: clang-tidy/misc/RedundantExpressionCheck.cpp:605
+ return strncmp(SM.getCharacterData(T1.getLocation()),
+ SM.getCharacterData(T2.getLocation()), T1.getLength()) == 0;
+}
----------------
JonasToth wrote:
> This operation could overflow if `len(T1) > len(T2)` and `T2` is the last token of the file. I think `std::min(T1.getLength(), T2.getLength())` would be better.
This code is only executed when they have the same length.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D55125/new/
https://reviews.llvm.org/D55125
More information about the cfe-commits
mailing list