From d3bdd84d8b40ea08d2a0b0d13ce7fadf197e40fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 9 Sep 2012 18:56:26 +0200 Subject: [PATCH] Fixed #4175 (segmentation fault of cppcheck) --- lib/checkuninitvar.cpp | 2 +- test/testuninitvar.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) 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"