diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 35d3319f7..df13977ea 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -1172,7 +1172,7 @@ bool CheckUninitVar::checkScopeForVariable(const Token *tok, const unsigned int } // skip sizeof / offsetof - if (Token::Match(tok, "sizeof|offsetof|decltype (")) + if (Token::Match(tok, "sizeof|typeof|offsetof|decltype (")) tok = tok->next()->link(); // for.. diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index 2b59592fb..03b7b02e6 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -1974,7 +1974,7 @@ private: "}"); ASSERT_EQUALS("", errout.str()); - // sizeof / offsetof + // sizeof / typeof / offsetof / etc checkUninitVar2("void f() {\n" " int i;\n" " sizeof(i+1);\n" @@ -1992,6 +1992,12 @@ private: " int i = ARRAY_SIZE(abc.a);" "}"); ASSERT_EQUALS("", errout.str()); + + checkUninitVar2("void f() {\n" + " int *abc;\n" + " typeof(*abc);\n" + "}"); + ASSERT_EQUALS("", errout.str()); } };