Skip to content

Commit bdb495d

Browse files
committed
CPP: Fix AV Rule 95 performance issue.
1 parent 41d5d5a commit bdb495d

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

cpp/ql/src/jsf/4.10 Classes/AV Rule 95.ql

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,19 @@
1111
*/
1212
import cpp
1313

14-
from Parameter p, Parameter superP, MemberFunction subF, MemberFunction superF, int i, string subValue, string superValue
15-
where p.hasInitializer()
16-
and subF.getParameter(i) = p
17-
and superP.hasInitializer()
14+
predicate parameterWithDefault(MemberFunction f, int ix, Parameter p, Expr initExpr, string initValue) {
15+
f.getParameter(ix) = p and
16+
p.hasInitializer() and
17+
initExpr = p.getInitializer().getExpr() and
18+
initValue = initExpr.getValue()
19+
}
20+
21+
from Parameter p, Parameter superP, MemberFunction subF, MemberFunction superF, int i, Expr subExpr, string subValue, string superValue
22+
where parameterWithDefault(subF, i, p, subExpr, subValue)
1823
and subF.overrides(superF)
19-
and superF.getParameter(i) = superP
20-
and subValue = p.getInitializer().getExpr().getValue()
21-
and superValue = superP.getInitializer().getExpr().getValue()
24+
and parameterWithDefault(superF, i, superP, _, superValue)
2225
and subValue != superValue
23-
select p.getInitializer().getExpr(),
26+
select subExpr,
2427
"Parameter " + p.getName() +
2528
" redefines its default value to " + subValue +
2629
" from the inherited default value " + superValue +

0 commit comments

Comments
 (0)