Skip to content

Commit d699201

Browse files
committed
CPP: Add a test demonstating when a deallocator call exists.
1 parent 027ed5e commit d699201

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

cpp/ql/test/library-tests/allocators/allocators.expected

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ newArrayExprDeallocators
3434
| allocators.cpp:108:3:108:19 | new[] | FailedInit | void FailedInit::operator delete[](void*, size_t) | 1 | 1 | sized |
3535
| allocators.cpp:110:3:110:37 | new[] | FailedInitOveraligned | void FailedInitOveraligned::operator delete[](void*, std::align_val_t, float) | 128 | 128 | aligned |
3636
deleteExprs
37-
| allocators.cpp:59:3:59:35 | delete | int | void operator delete(void*, unsigned long) | 4 | 4 | sized |
38-
| allocators.cpp:60:3:60:38 | delete | String | void operator delete(void*, unsigned long) | 8 | 8 | sized |
39-
| allocators.cpp:61:3:61:44 | delete | SizedDealloc | void SizedDealloc::operator delete(void*, size_t) | 32 | 1 | sized |
40-
| allocators.cpp:62:3:62:43 | delete | Overaligned | void operator delete(void*, unsigned long, std::align_val_t) | 256 | 128 | sized aligned |
41-
| allocators.cpp:64:3:64:44 | delete | const String | void operator delete(void*, unsigned long) | 8 | 8 | sized |
37+
| allocators.cpp:59:3:59:35 | delete | int | void operator delete(void*, unsigned long) | 4 | 4 | sized | false |
38+
| allocators.cpp:60:3:60:38 | delete | String | void operator delete(void*, unsigned long) | 8 | 8 | sized | false |
39+
| allocators.cpp:61:3:61:44 | delete | SizedDealloc | void SizedDealloc::operator delete(void*, size_t) | 32 | 1 | sized | true |
40+
| allocators.cpp:62:3:62:43 | delete | Overaligned | void operator delete(void*, unsigned long, std::align_val_t) | 256 | 128 | sized aligned | false |
41+
| allocators.cpp:64:3:64:44 | delete | const String | void operator delete(void*, unsigned long) | 8 | 8 | sized | false |
4242
deleteArrayExprs
4343
| allocators.cpp:78:3:78:37 | delete[] | int | void operator delete[](void*, unsigned long) | 4 | 4 | sized |
4444
| allocators.cpp:79:3:79:40 | delete[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |

cpp/ql/test/library-tests/allocators/allocators.ql

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ query predicate newArrayExprDeallocators(
7777
}
7878

7979
query predicate deleteExprs(
80-
DeleteExpr expr, string type, string sig, int size, int alignment, string form
80+
DeleteExpr expr, string type, string sig, int size, int alignment, string form,
81+
boolean hasDeallocatorCall
8182
) {
8283
exists(Function deallocator, Type deletedType |
8384
expr.getDeallocator() = deallocator and
@@ -90,7 +91,10 @@ query predicate deleteExprs(
9091
(if expr.hasAlignedDeallocation() then aligned = "aligned" else aligned = "") and
9192
(if expr.hasSizedDeallocation() then sized = "sized" else sized = "") and
9293
form = sized + " " + aligned
93-
)
94+
) and
95+
if exists(expr.getDeallocatorCall())
96+
then hasDeallocatorCall = true
97+
else hasDeallocatorCall = false
9498
)
9599
}
96100

0 commit comments

Comments
 (0)