From 9a879fc8284902c0e0caaf8440d5eb41ed5c0bbe Mon Sep 17 00:00:00 2001 From: PKEuS Date: Sat, 7 Nov 2015 13:18:50 +0100 Subject: [PATCH] Fixed false positives with pointerSize being shown even if no sizeof() is used (#7100). --- lib/checksizeof.cpp | 3 +++ test/testsizeof.cpp | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/lib/checksizeof.cpp b/lib/checksizeof.cpp index 0c1f63a27..03bd6178b 100644 --- a/lib/checksizeof.cpp +++ b/lib/checksizeof.cpp @@ -189,6 +189,9 @@ void CheckSizeof::checkSizeofForPointerSize() // This is to allow generic operations with sizeof for (; tokSize && tokSize->str() != ")" && tokSize->str() != "," && tokSize->str() != "sizeof"; tokSize = tokSize->next()) {} + if (tokSize->str() != "sizeof") + continue; + if (Token::simpleMatch(tokSize, "sizeof ( &")) tokSize = tokSize->tokAt(3); else if (Token::Match(tokSize, "sizeof (|&")) diff --git a/test/testsizeof.cpp b/test/testsizeof.cpp index 5a1ff67b6..3d22b3adb 100644 --- a/test/testsizeof.cpp +++ b/test/testsizeof.cpp @@ -537,6 +537,11 @@ private: " memset(tab + confsize, 0, sizeof(tab[confsize]));\n" "}"); ASSERT_EQUALS("", errout.str()); + + check("int f(char* aug) {\n" + " memmove(aug + extra_string, aug, buf - (bfd_byte *)aug);\n" // #7100 + "}"); + ASSERT_EQUALS("", errout.str()); } void checkPointerSizeofStruct() {