diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 9f5254b02c7..d681899ad32 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -6528,7 +6528,7 @@ static void valueFlowContainerSize(const TokenList& tokenlist, const Dimension& dim = var->dimensions().front(); if (dim.known) { size = dim.num; - } else if (dim.tok && dim.tok->hasKnownIntValue()) { + } else if (dim.tok && dim.tok->hasKnownIntValue() && dim.tok->strAt(1) == ">") { size = dim.tok->values().front().intvalue; } } diff --git a/test/testvalueflow.cpp b/test/testvalueflow.cpp index acc64f1f97d..5dfd062262e 100644 --- a/test/testvalueflow.cpp +++ b/test/testvalueflow.cpp @@ -7158,6 +7158,12 @@ class TestValueFlow : public TestFixture { " return v[2];\n" "}"; ASSERT(isKnownContainerSizeValue(tokenValues(code, "v ["), 3).empty()); + + code = "auto f() {\n" // #13654 + " std::array a{};\n" + " return a[0];\n" + "}"; + ASSERT(!isKnownContainerSizeValue(tokenValues(code, "a ["), 6).empty()); } void valueFlowContainerElement()