fix for loop false positives when zero length arrays present
This commit is contained in:
parent
97d4277854
commit
ac070b90f2
|
@ -546,7 +546,9 @@ void CheckBufferOverrun::parse_for_body(const Token *tok2, const ArrayInfo &arra
|
|||
indexes.push_back(std::min(min_index, max_index));
|
||||
arrayIndexOutOfBoundsError(tok2, arrayInfo, indexes);
|
||||
}
|
||||
if (min_index >= (int)arrayInfo.num(0) || max_index >= (int)arrayInfo.num(0))
|
||||
|
||||
// skip 0 length arrays
|
||||
if (arrayInfo.num(0) && (min_index >= (int)arrayInfo.num(0) || max_index >= (int)arrayInfo.num(0)))
|
||||
{
|
||||
std::vector<MathLib::bigint> indexes;
|
||||
indexes.push_back(std::max(min_index, max_index));
|
||||
|
|
|
@ -113,6 +113,7 @@ private:
|
|||
TEST_CASE(array_index_34); // ticket #3063
|
||||
TEST_CASE(array_index_35); // ticket #2889
|
||||
TEST_CASE(array_index_36); // ticket #2960
|
||||
TEST_CASE(array_index_37);
|
||||
TEST_CASE(array_index_multidim);
|
||||
TEST_CASE(array_index_switch_in_for);
|
||||
TEST_CASE(array_index_for_in_for); // FP: #2634
|
||||
|
@ -1297,6 +1298,18 @@ private:
|
|||
"[test.cpp:7]: (error) Array 'rhs.m_b[2]' index 2 out of bounds\n", errout.str());
|
||||
}
|
||||
|
||||
void array_index_37()
|
||||
{
|
||||
check("class Fred {\n"
|
||||
" char x[X];\n"
|
||||
" Fred() {\n"
|
||||
" for (unsigned int i = 0; i < 15; i++)\n"
|
||||
" i;\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void array_index_multidim()
|
||||
{
|
||||
check("void f()\n"
|
||||
|
|
Loading…
Reference in New Issue