From 272eb445fb1696932dc2a1825f238ec8ae6c2d8a Mon Sep 17 00:00:00 2001 From: Robert Reif Date: Mon, 27 Jun 2011 07:31:10 -0400 Subject: [PATCH] fix #2865 (segmentation fault of cppcheck ( char a[1] )) --- lib/symboldatabase.cpp | 2 +- test/testsymboldatabase.cpp | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index f5a0eb8b0..194db6fca 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1305,7 +1305,7 @@ bool SymbolDatabase::arrayDimensions(std::vector &dimensions, const T const Token *dim = tok; - while (dim->str() == "[" && dim->next() && dim->next()->str() != "]") + while (dim && dim->next() && dim->str() == "[" && dim->next()->str() != "]") { Dimension dimension; dimension.num = 0; diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index d25530ae0..0c81cc14f 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -120,6 +120,7 @@ private: TEST_CASE(symboldatabase15); // ticket #2591 TEST_CASE(symboldatabase16); // ticket #2637 TEST_CASE(symboldatabase17); // ticket #2657 + TEST_CASE(symboldatabase18); // ticket #2865 } void test_isVariableDeclarationCanHandleNull() @@ -869,6 +870,14 @@ private: ASSERT_EQUALS("", errout.str()); } + void symboldatabase18() + { + // ticket #2865 - segmentation fault + check("char a[1]\n"); + + ASSERT_EQUALS("", errout.str()); + } + }; REGISTER_TEST(TestSymbolDatabase)