Fixed #6261 (false positive: Variable used in ternary expression within function argument list)
This commit is contained in:
parent
4827751b04
commit
db01ea1408
|
@ -691,7 +691,7 @@ static void useFunctionArgs(const Token *tok, Variables& variables)
|
|||
// TODO: Match function args to see if they are const or not. Assume that const data is not written.
|
||||
if (!tok)
|
||||
return;
|
||||
if (Token::Match(tok, "[,+]")) {
|
||||
if (Token::Match(tok, "[,+?:]")) {
|
||||
useFunctionArgs(tok->astOperand1(), variables);
|
||||
useFunctionArgs(tok->astOperand2(), variables);
|
||||
} else if (tok->variable() && tok->variable()->isArray()) {
|
||||
|
|
|
@ -102,6 +102,7 @@ private:
|
|||
TEST_CASE(localvar47); // ticket #6603
|
||||
TEST_CASE(localvar48); // ticket #6954
|
||||
TEST_CASE(localvar49); // ticket #7594
|
||||
TEST_CASE(localvar50); // ticket #6261 : dostuff(cond ? buf1 : buf2)
|
||||
TEST_CASE(localvaralias1);
|
||||
TEST_CASE(localvaralias2); // ticket #1637
|
||||
TEST_CASE(localvaralias3); // ticket #1639
|
||||
|
@ -2018,6 +2019,20 @@ private:
|
|||
ASSERT_EQUALS("[test.cpp:16]: (style) Variable 'x' is assigned a value that is never used.\n", errout.str());
|
||||
}
|
||||
|
||||
void localvar50() { // #6261
|
||||
functionVariableUsage("void foo() {\n"
|
||||
" char buf1[10];\n"
|
||||
" dostuff(cond?buf1:buf2);\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
functionVariableUsage("void foo() {\n"
|
||||
" char buf1[10];\n"
|
||||
" dostuff(cond?buf2:buf1);\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void localvaralias1() {
|
||||
functionVariableUsage("void foo()\n"
|
||||
"{\n"
|
||||
|
|
Loading…
Reference in New Issue