From 70a32fc2458cd4e49b3310d67c5df0ad2538a105 Mon Sep 17 00:00:00 2001 From: Robert Reif Date: Tue, 28 Jun 2011 18:47:18 -0400 Subject: [PATCH] fix #2875 (segmentation fault of cppcheck ( 0; (a) < (a) )) --- lib/tokenize.cpp | 2 +- test/testtokenize.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 0d0ddd9ec..402b9f734 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -3682,7 +3682,7 @@ void Tokenizer::setVarId() if (tok2 && tok2->str() == "(") { tok2 = tok2->link()->next(); - if (tok2->str() == "(") + if (tok2 && tok2->str() == "(") tok2 = tok2->link()->next(); again = true; } diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index e50553e60..4a52c0426 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -177,6 +177,7 @@ private: TEST_CASE(varid30); // ticket #2614 TEST_CASE(varid31); // ticket #2831 (segmentation fault) TEST_CASE(varid32); // ticket #2835 (segmentation fault) + TEST_CASE(varid33); // ticket #2875 (segmentation fault) TEST_CASE(varidFunctionCall1); TEST_CASE(varidFunctionCall2); TEST_CASE(varidFunctionCall3); @@ -2954,6 +2955,12 @@ private: ASSERT_EQUALS("", errout.str()); } + void varid33() // ticket #2875 (segmentation fault) + { + const std::string code("0; (a) < (a)"); + ASSERT_EQUALS("", errout.str()); + } + void varidFunctionCall1() { const std::string code("void f() {\n"