@@ -3,7 +3,7 @@ import semmle.code.cpp.Type
3
3
/** For upgraded databases without mangled name info. */
4
4
pragma [ noinline]
5
5
private string getTopLevelClassName ( @usertype c ) {
6
- not mangled_name ( _, _) and
6
+ not mangled_name ( _, _, _ ) and
7
7
isClass ( c ) and
8
8
usertypes ( c , result , _) and
9
9
not namespacembrs ( _, c ) and // not in a namespace
@@ -17,7 +17,7 @@ private string getTopLevelClassName(@usertype c) {
17
17
*/
18
18
pragma [ noinline]
19
19
private predicate existsCompleteWithName ( string name , @usertype d ) {
20
- not mangled_name ( _, _) and
20
+ not mangled_name ( _, _, _ ) and
21
21
is_complete ( d ) and
22
22
name = getTopLevelClassName ( d ) and
23
23
onlyOneCompleteClassExistsWithName ( name )
@@ -26,7 +26,7 @@ private predicate existsCompleteWithName(string name, @usertype d) {
26
26
/** For upgraded databases without mangled name info. */
27
27
pragma [ noinline]
28
28
private predicate onlyOneCompleteClassExistsWithName ( string name ) {
29
- not mangled_name ( _, _) and
29
+ not mangled_name ( _, _, _ ) and
30
30
strictcount ( @usertype c | is_complete ( c ) and getTopLevelClassName ( c ) = name ) = 1
31
31
}
32
32
@@ -36,7 +36,7 @@ private predicate onlyOneCompleteClassExistsWithName(string name) {
36
36
*/
37
37
pragma [ noinline]
38
38
private predicate existsIncompleteWithName ( string name , @usertype c ) {
39
- not mangled_name ( _, _) and
39
+ not mangled_name ( _, _, _ ) and
40
40
not is_complete ( c ) and
41
41
name = getTopLevelClassName ( c )
42
42
}
@@ -47,7 +47,7 @@ private predicate existsIncompleteWithName(string name, @usertype c) {
47
47
* with the same name.
48
48
*/
49
49
private predicate oldHasCompleteTwin ( @usertype c , @usertype d ) {
50
- not mangled_name ( _, _) and
50
+ not mangled_name ( _, _, _ ) and
51
51
exists ( string name |
52
52
existsIncompleteWithName ( name , c ) and
53
53
existsCompleteWithName ( name , d )
@@ -57,7 +57,7 @@ private predicate oldHasCompleteTwin(@usertype c, @usertype d) {
57
57
pragma [ noinline]
58
58
private @mangledname getClassMangledName ( @usertype c ) {
59
59
isClass ( c ) and
60
- mangled_name ( c , result )
60
+ mangled_name ( c , result , _ )
61
61
}
62
62
63
63
/** Holds if `d` is a unique complete class named `name`. */
0 commit comments