diff --git a/cpp/ql/src/semmle/code/cpp/valuenumbering/HashCons.qll b/cpp/ql/src/semmle/code/cpp/valuenumbering/HashCons.qll index 5494d656ac3..407ad5ff721 100644 --- a/cpp/ql/src/semmle/code/cpp/valuenumbering/HashCons.qll +++ b/cpp/ql/src/semmle/code/cpp/valuenumbering/HashCons.qll @@ -748,14 +748,13 @@ private predicate mk_FieldCons(Class c, int i, Field f, HashCons hc, HC_Fields h cal.getType().getUnspecifiedType() = c and exists(Expr e | e = cal.getFieldExpr(f).getFullyConverted() and - e = cal.getChild(i).getFullyConverted() and + f.getInitializationOrder() = i and hc = hashCons(e) and ( exists(HashCons head, Field f2, HC_Fields tail | hcf = HC_FieldCons(c, i-1, f2, head, tail) and - cal.getChild(i-1).getFullyConverted() = cal.getFieldExpr(f2).getFullyConverted() and + f2.getInitializationOrder() = i-1 and mk_FieldCons(c, i-1, f2, head, tail, cal) - ) or i = 0 and @@ -777,7 +776,7 @@ private predicate mk_ClassAggregateLiteral(Class c, HC_Fields hcf, ClassAggregat c = cal.getType().getUnspecifiedType() and ( exists(HC_Fields tail, Expr e, Field f | - e = cal.getChild(cal.getNumChild() - 1).getFullyConverted() and + f.getInitializationOrder() = cal.getNumChild() - 1 and e = cal.getFieldExpr(f).getFullyConverted() and hcf = HC_FieldCons(c, cal.getNumChild() - 1, f, hashCons(e), tail) and mk_FieldCons(c, cal.getNumChild() - 1, f, hashCons(e), tail, cal) diff --git a/cpp/ql/test/library-tests/valuenumbering/HashCons/HashCons.expected b/cpp/ql/test/library-tests/valuenumbering/HashCons/HashCons.expected index 48adfedf87e..0f92bbd658e 100644 --- a/cpp/ql/test/library-tests/valuenumbering/HashCons/HashCons.expected +++ b/cpp/ql/test/library-tests/valuenumbering/HashCons/HashCons.expected @@ -111,7 +111,6 @@ | test.cpp:269:3:269:19 | {...} | 269:c3-c19 270:c3-c19 | | test.cpp:273:3:273:12 | new[] | 273:c3-c12 274:c3-c12 | | test.cpp:273:11:273:11 | x | 273:c11-c11 274:c11-c11 | -| test.cpp:284:15:287:3 | {...} | 284:c15-c3 288:c15-c3 | | test.cpp:299:3:299:9 | throw ... | 299:c3-c9 300:c3-c9 | | test.cpp:301:3:301:9 | throw ... | 301:c3-c9 302:c3-c9 | | test.cpp:303:3:303:7 | re-throw exception | 303:c3-c7 304:c3-c7 |