diff --git a/src/checkother.cpp b/src/checkother.cpp index 7d7c8e755..aa5eea927 100644 --- a/src/checkother.cpp +++ b/src/checkother.cpp @@ -1130,6 +1130,10 @@ void CheckOther::nullPointer() --indentlevel2; } + // goto destination.. + else if (tok2->isName() && Token::simpleMatch(tok2->next(), ":")) + break; + // Reassignment of the struct else if (tok2->varId() == varid1) { @@ -1194,6 +1198,10 @@ void CheckOther::nullPointer() else if (tok1->str() == "{" || tok1->str() == "}") break; + + // goto destination.. + else if (tok1->isName() && Token::simpleMatch(tok1->next(), ":")) + break; } } } diff --git a/test/testother.cpp b/test/testother.cpp index 527989bb3..655901391 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -532,6 +532,15 @@ private: "}\n"); ASSERT_EQUALS("", errout.str()); + checkNullPointer("void foo(struct ABC *abc)\n" + "{\n" + " int *a = abc->a;\n" + "out:\n" + " if (!abc)\n" + " ;\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + // loops.. checkNullPointer("void freeAbc(struct ABC *abc)\n" "{\n"