diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 53e8664c2..c87d12b3c 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -584,6 +584,12 @@ static void valueFlowNumber(TokenList *tokenlist) ValueFlow::Value value(tok->str() == "true"); value.setKnown(); setTokenValue(tok, value); + } else if (Token::Match(tok, "[(,] NULL [,)]")) { + // NULL function parameters are not simplified in the + // normal tokenlist + ValueFlow::Value value(0); + value.setKnown(); + setTokenValue(tok->next(), value); } } } diff --git a/test/testvalueflow.cpp b/test/testvalueflow.cpp index 22ba4b37a..d4bc03324 100644 --- a/test/testvalueflow.cpp +++ b/test/testvalueflow.cpp @@ -167,6 +167,7 @@ private: ASSERT_EQUALS(123, valueOfTok("x=123;", "123").intvalue); ASSERT_EQUALS(0, valueOfTok("x=false;", "false").intvalue); ASSERT_EQUALS(1, valueOfTok("x=true;", "true").intvalue); + ASSERT_EQUALS(0, valueOfTok("x(NULL);", "NULL").intvalue); ASSERT_EQUALS((int)('a'), valueOfTok("x='a';", "'a'").intvalue); ASSERT_EQUALS((int)('\n'), valueOfTok("x='\\n';", "'\\n'").intvalue); }