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() {