diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 14d9cf18d..adb70a508 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -1072,7 +1072,7 @@ void CheckUninitVar::checkScope(const Scope* scope) bool stdtype = _tokenizer->isC(); const Token* tok = i->typeStartToken(); - for (; tok->str() != ";" && tok->str() != "<"; tok = tok->next()) { + for (; tok && tok->str() != ";" && tok->str() != "<"; tok = tok->next()) { if (tok->isStandardType()) stdtype = true; } diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index f15234b05..36646a2cf 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -2126,6 +2126,8 @@ private: "}\n"); ASSERT_EQUALS("", errout.str()); + checkUninitVar2(">{ x while (y) z int = }"); // #4175 : don't crash + // try checkUninitVar2("void f() {\n" " int i, *p = &i;\n"