Skip to content

Commit 1210936

Browse files
pfultz2danmar
authored andcommitted
Fix issue 9202: False positive: std::array, size is a constant (#2132)
1 parent 717aa82 commit 1210936

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

lib/valueflow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5365,8 +5365,8 @@ static void valueFlowContainerSize(TokenList *tokenlist, SymbolDatabase* symbold
53655365
continue;
53665366
ValueFlow::Value value(0);
53675367
if (var->valueType()->container->size_templateArgNo >= 0) {
5368-
if (var->dimensions().size() == 1 && var->dimensions().front().known)
5369-
value.intvalue = var->dimensions().front().num;
5368+
if (var->dimensions().size() == 1 && var->dimensions().front().tok && var->dimensions().front().tok->hasKnownIntValue())
5369+
value.intvalue = var->dimensions().front().tok->getKnownIntValue();
53705370
else
53715371
continue;
53725372
}

test/teststl.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,13 @@ class TestStl : public TestFixture {
311311
" ++abc[s];\n"
312312
"}");
313313
ASSERT_EQUALS("", errout.str());
314+
315+
checkNormal("void f() {\n"
316+
" static const int N = 4;\n"
317+
" std::array<int, N> x;\n"
318+
" x[0] = 0;\n"
319+
"}\n");
320+
ASSERT_EQUALS("", errout.str());
314321
}
315322

316323
void outOfBoundsIndexExpression() {

0 commit comments

Comments
 (0)