Skip to content

Commit 4ad90bf

Browse files
committed
Uninitialized variables; Fixed FP in inner for loop
1 parent fa72ec2 commit 4ad90bf

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

lib/checkuninitvar.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -902,8 +902,8 @@ const Token* CheckUninitVar::checkLoopBodyRecursive(const Token *start, const Va
902902
continue;
903903
const Token *bodyStart = top->link()->next();
904904
const Token *errorToken1 = checkLoopBodyRecursive(bodyStart, var, alloc, membervar, bailout);
905-
if (errorToken1)
906-
return errorToken1;
905+
if (!errorToken)
906+
errorToken = errorToken1;
907907
if (bailout)
908908
return nullptr;
909909
}

test/testuninitvar.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1259,6 +1259,16 @@ class TestUninitVar : public TestFixture {
12591259
"}");
12601260
ASSERT_EQUALS("[test.cpp:6]: (error) Uninitialized variable: x\n", errout.str());
12611261

1262+
checkUninitVar("void foo(int n) {\n"
1263+
" int one[10];\n"
1264+
" for (int rank = 0; rank < n; ++rank) {\n"
1265+
" for (int i=0;i<rank;i++)\n"
1266+
" f = one[i];\n"
1267+
" one[rank] = -1;\n"
1268+
" }\n"
1269+
"}");
1270+
ASSERT_EQUALS("", errout.str());
1271+
12621272
// Ticket #2226: C++0x loop
12631273
checkUninitVar("void f() {\n"
12641274
" container c;\n"

0 commit comments

Comments
 (0)