You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ASSERT_EQUALS("[test.cpp:5]: (warning) Signed 'char' type used as array index.\n", errout.str());
check("int buf[256];\n"
"void foo(signed char ch)\n"
"{\n"
" buf[ch] = 0;\n"
"}");
ASSERT_EQUALS("", errout.str());
check("void foo(const char str[])\n"
"{\n"
" map[str] = 0;\n"
"}");
ASSERT_EQUALS("", errout.str());
}
voidarray_index_2() {
// #3282 - False positive
check("void foo(char i);\n"
"void bar(int i) {\n"
" const char *s = \"abcde\";\n"
" foo(s[i]);\n"
"}");
ASSERT_EQUALS("", errout.str());
}
voidbitop() {
check("void foo(int *result) {\n"
" signed char ch = -1;\n"
" *result = a | ch;\n"
"}");
ASSERT_EQUALS("[test.cpp:3]: (warning) When using 'char' variables in bit operations, sign extension can generate unexpected results.\n", errout.str());
check("void foo(int *result) {\n"
" unsigned char ch = -1;\n"
" *result = a | ch;\n"
"}");
ASSERT_EQUALS("", errout.str());
check("void foo(char *result) {\n"
" signed char ch = -1;\n"
" *result = a | ch;\n"
"}");
ASSERT_EQUALS("", errout.str());
// 0x03 & ..
check("void foo(int *result) {\n"
" signed char ch = -1;\n"
" *result = 0x03 | ch;\n"
"}");
ASSERT_EQUALS("[test.cpp:3]: (warning) When using 'char' variables in bit operations, sign extension can generate unexpected results.\n", errout.str());