From cb43168d817fd03029c8393c5a126a0c6bc4223d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 2 Jun 2010 18:10:32 +0200 Subject: [PATCH] Fixed #1720 (segmentation fault of cppcheck) --- lib/checkother.cpp | 3 ++- test/testunusedvar.cpp | 27 +++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/checkother.cpp b/lib/checkother.cpp index 9146e3919..7a8e21ded 100644 --- a/lib/checkother.cpp +++ b/lib/checkother.cpp @@ -523,7 +523,8 @@ void Variables::alias(unsigned int varid1, unsigned int varid2) { VariableUsage *temp = find(*i); - temp->_aliases.erase(var1->_name->varId()); + if (temp) + temp->_aliases.erase(var1->_name->varId()); } // remove all aliases from var1 diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 80cab4d18..f43c2c88c 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -1147,20 +1147,19 @@ private: void localvar17() // ticket #1720 { - // FIXME: Don't crash when checking the code below! - /* - functionVariableUsage("void foo()\n" - "{\n" - " struct DATA *data;\n" - " char *k = data->req;\n" - " char *ptr;\n" - " char *line_start;\n" - " ptr = data->buffer;\n" - " line_start = ptr;\n" - " data->info = k;\n" - " line_start = ptr;\n" - "}\n"); - */ + // Don't crash when checking the code below! + functionVariableUsage("void foo()\n" + "{\n" + " struct DATA *data;\n" + " char *k = data->req;\n" + " char *ptr;\n" + " char *line_start;\n" + " ptr = data->buffer;\n" + " line_start = ptr;\n" + " data->info = k;\n" + " line_start = ptr;\n" + "}\n"); + ASSERT_EQUALS("[test.cpp:6]: (style) Variable 'line_start' is assigned a value that is never used\n", errout.str()); } void localvaralias1()