Skip to content

Commit 7691c0a

Browse files
authored
Merge pull request #280 from pavgust/imp/use-in-own-init
UseInOwnInitialiser: Refactor logic slightly.
2 parents 828d3cb + 6d77a79 commit 7691c0a

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

cpp/ql/src/Likely Bugs/UseInOwnInitializer.ql

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,21 @@
1111

1212
import cpp
1313

14-
from Initializer init, Variable v, VariableAccess va
15-
where init.getDeclaration() = v
16-
and va.getTarget() = v
17-
and va.getParent*() = init
14+
class VariableAccessInInitializer extends VariableAccess {
15+
Variable var;
16+
Initializer init;
17+
VariableAccessInInitializer() {
18+
init.getDeclaration() = var and
19+
init.getExpr().getAChild*() = this
20+
}
21+
22+
predicate initializesItself(Variable v, Initializer i) {
23+
v = var and i = init and var = this.getTarget()
24+
}
25+
}
26+
27+
from Initializer init, Variable v, VariableAccessInInitializer va
28+
where va.initializesItself(v, init)
1829
and (
1930
va.hasLValueToRValueConversion() or
2031
exists (Assignment assn | assn.getLValue() = va) or

0 commit comments

Comments
 (0)