Skip to content

Commit a6cc9b2

Browse files
Partial fix for #11567 FN nullPointer/ctunullpointer with default parameter (regression) (danmar#6565)
1 parent 83578c8 commit a6cc9b2

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

lib/valueflow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6941,7 +6941,7 @@ static void valueFlowFunctionDefaultParameter(const TokenList& tokenlist, const
69416941
continue;
69426942
for (std::size_t arg = function->minArgCount(); arg < function->argCount(); arg++) {
69436943
const Variable* var = function->getArgumentVar(arg);
6944-
if (var && var->hasDefault() && Token::Match(var->nameToken(), "%var% = %num%|%str% [,)]")) {
6944+
if (var && var->hasDefault() && Token::Match(var->nameToken(), "%var% = %num%|%str%|%char%|%name% [,)]")) {
69456945
const std::list<ValueFlow::Value> &values = var->nameToken()->tokAt(2)->values();
69466946
std::list<ValueFlow::Value> argvalues;
69476947
for (const ValueFlow::Value &value : values) {

test/testnullpointer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4405,6 +4405,10 @@ class TestNullPointer : public TestFixture {
44054405
" int var1 = x ? *p : 5;\n"
44064406
"}");
44074407
ASSERT_EQUALS("[test.cpp:2]: (warning) Possible null pointer dereference if the default parameter value is used: p\n", errout_str());
4408+
4409+
check("void f(int* i = nullptr) { *i = 0; }\n" // #11567
4410+
"void g() { f(); }\n");
4411+
ASSERT_EQUALS("[test.cpp:1]: (warning) Possible null pointer dereference if the default parameter value is used: i\n", errout_str());
44084412
}
44094413

44104414
void nullpointer_internal_error() { // ticket #5080

0 commit comments

Comments
 (0)