parent
f9337b725b
commit
8fc75402a1
|
@ -141,7 +141,8 @@ void CheckFunctions::invalidFunctionUsage()
|
|||
const Variable* const variable = argtok->variable();
|
||||
// Is non-null terminated local variable of type char (e.g. char buf[] = {'x'};) ?
|
||||
if (variable && variable->isLocal()
|
||||
&& valueType && (valueType->type == ValueType::Type::CHAR || valueType->type == ValueType::Type::WCHAR_T)) {
|
||||
&& valueType && (valueType->type == ValueType::Type::CHAR || valueType->type == ValueType::Type::WCHAR_T)
|
||||
&& !isVariablesChanged(variable->declEndToken(), functionToken, 0 /*indirect*/, { variable }, mSettings, mTokenizer->isCPP())) {
|
||||
const Token* varTok = variable->declEndToken();
|
||||
auto count = -1; // Find out explicitly set count, e.g.: char buf[3] = {...}. Variable 'count' is set to 3 then.
|
||||
if (varTok && Token::simpleMatch(varTok->astOperand1(), "["))
|
||||
|
|
|
@ -735,6 +735,14 @@ private:
|
|||
" return strlen(c);\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
check("void f(int n) {\n" // #11179
|
||||
" char s[8] = \" \";\n"
|
||||
" n = (n + 1) % 100;\n"
|
||||
" sprintf(s, \"lwip%02d\", n);\n"
|
||||
" s[strlen(s)] = ' ';\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void mathfunctionCall_sqrt() {
|
||||
|
|
Loading…
Reference in New Issue