From e6a394d51475e3b74aeea56ae2508298f1dbf4ef Mon Sep 17 00:00:00 2001 From: Alexander Mai Date: Sat, 24 May 2014 19:15:43 +0200 Subject: [PATCH] CheckBool::checkAssignBoolToFloat() - don't crash on unknown variables --- lib/checkbool.cpp | 4 ++-- test/testbool.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/checkbool.cpp b/lib/checkbool.cpp index d3853532a..40579e462 100644 --- a/lib/checkbool.cpp +++ b/lib/checkbool.cpp @@ -485,8 +485,8 @@ void CheckBool::checkAssignBoolToFloat() const Scope * scope = symbolDatabase->functionScopes[i]; for (const Token* tok = scope->classStart; tok != scope->classEnd; tok = tok->next()) { if (Token::Match(tok, "!!* %var% = %bool% ;")) { - const Variable *var = symbolDatabase->getVariableFromVarId(tok->next()->varId()); - if (var->isFloatingType()) + const Variable * const var = symbolDatabase->getVariableFromVarId(tok->next()->varId()); + if (var && var->isFloatingType()) assignBoolToFloatError(tok->next()); } } diff --git a/test/testbool.cpp b/test/testbool.cpp index 8c725f01b..56a5400ba 100644 --- a/test/testbool.cpp +++ b/test/testbool.cpp @@ -155,6 +155,12 @@ private: " long double d = (2>1);\n" "}"); TODO_ASSERT_EQUALS("[test.cpp:2]: (style) Boolean value assigned to floating point variable.\n", "", errout.str()); + + // stability - don't crash: + check("void foo4() {\n" + " unknown = false;\n" + "}"); + ASSERT_EQUALS("", errout.str()); } void comparisonOfBoolExpressionWithInt1() {