diff --git a/lib/programmemory.h b/lib/programmemory.h index bb68a9404d4..95effc70874 100644 --- a/lib/programmemory.h +++ b/lib/programmemory.h @@ -102,7 +102,7 @@ struct ExprIdToken { }; struct CPPCHECKLIB ProgramMemory { - using Map = std::unordered_map; + using Map = std::map; ProgramMemory() : mValues(new Map()) {} diff --git a/test/testcondition.cpp b/test/testcondition.cpp index fae9c8fce13..f0764dd2bd6 100644 --- a/test/testcondition.cpp +++ b/test/testcondition.cpp @@ -5174,6 +5174,15 @@ class TestCondition : public TestFixture { TODO_ASSERT_EQUALS("", "[test.cpp:11:14]: (style) Condition 'p->i==o' is always true [knownConditionTrueFalse]\n", errout_str()); + + check("void f(int x) {\n" // #12320 + " int a = 0, b = 0, c = 0;\n" + " a = x;\n" + " if (a) b = x;\n" + " if (b) c = x;\n" + " if (c) {}\n" + "}\n"); + ASSERT_EQUALS("", errout_str()); } void alwaysTrueInfer() {