Skip to content

Commit f20af49

Browse files
committed
CPP: Add a test of a Shutdown / Clear method.
1 parent 976e5ed commit f20af49

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/AV Rule 79.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@
1717
| Variants.cpp:65:3:65:17 | ... = ... | Resource a is acquired by class MyClass6 but not released anywhere in this class. |
1818
| Variants.cpp:66:3:66:36 | ... = ... | Resource b is acquired by class MyClass6 but not released anywhere in this class. |
1919
| Variants.cpp:67:3:67:41 | ... = ... | Resource c is acquired by class MyClass6 but not released anywhere in this class. |
20+
| Wrapped.cpp:46:3:46:22 | ... = ... | Resource ptr2 is acquired by class Wrapped2 but not released anywhere in this class. |
21+
| Wrapped.cpp:59:3:59:22 | ... = ... | Resource ptr4 is acquired by class Wrapped2 but not released anywhere in this class. |

cpp/ql/test/query-tests/jsf/4.10 Classes/AV Rule 79/Wrapped.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,34 @@ class Wrapped
3737
private:
3838
char *ptr1, *ptr2, *ptr3;
3939
};
40+
41+
class Wrapped2
42+
{
43+
public:
44+
Wrapped2(int len) {
45+
ptr1 = new char[len]; // GOOD
46+
ptr2 = new char[len]; // BAD: not released in destructor
47+
48+
Init(len);
49+
}
50+
51+
~Wrapped2()
52+
{
53+
Shutdown();
54+
}
55+
56+
void Init(int len)
57+
{
58+
ptr3 = new char[len]; // GOOD
59+
ptr4 = new char[len]; // BAD: not released in destructor
60+
}
61+
62+
void Shutdown()
63+
{
64+
delete [] ptr1;
65+
delete [] ptr3;
66+
}
67+
68+
private:
69+
char *ptr1, *ptr2, *ptr3, *ptr4;
70+
};

0 commit comments

Comments
 (0)