#5639 String literal compared with char buffer in a struct.
This commit is contained in:
parent
f01d7543f6
commit
976966fe81
|
@ -2960,7 +2960,7 @@ void CheckOther::checkSuspiciousStringCompare()
|
|||
const std::string varname = varTok->expressionString();
|
||||
|
||||
if (litTok->type() == Token::eString) {
|
||||
if (_tokenizer->isC() || (var && var->isPointer()))
|
||||
if (_tokenizer->isC() || (var && var->isArrayOrPointer()))
|
||||
suspiciousStringCompareError(tok, varname);
|
||||
} else if (litTok->originalName() == "'\\0'" && var && var->isPointer()) {
|
||||
suspiciousStringCompareError_char(tok, varname);
|
||||
|
|
|
@ -5327,6 +5327,24 @@ private:
|
|||
check("int foo(char c) {\n"
|
||||
"return c == \"42\"[0];}", "test.c", false, true, false, false);
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
// 5639 String literal compared with char buffer in a struct
|
||||
check("struct Example {\n"
|
||||
" char buffer[200];\n"
|
||||
"};\n"
|
||||
"void foo() {\n"
|
||||
" struct Example example;\n"
|
||||
" if (example.buffer == \"test\") ;\n"
|
||||
"}\n", "test.cpp", false, true, false, false);
|
||||
ASSERT_EQUALS("[test.cpp:6]: (warning) String literal compared with variable 'example.buffer'. Did you intend to use strcmp() instead?\n", errout.str());
|
||||
check("struct Example {\n"
|
||||
" char buffer[200];\n"
|
||||
"};\n"
|
||||
"void foo() {\n"
|
||||
" struct Example example;\n"
|
||||
" if (example.buffer == \"test\") ;\n"
|
||||
"}\n", "test.c", false, true, false, false);
|
||||
ASSERT_EQUALS("[test.c:6]: (warning) String literal compared with variable 'example.buffer'. Did you intend to use strcmp() instead?\n", errout.str());
|
||||
}
|
||||
|
||||
void suspiciousStringCompare_char() {
|
||||
|
|
Loading…
Reference in New Issue