File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed
Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -1673,6 +1673,7 @@ class TestMemleakStructMember : public TestFixture {
16731673 TEST_CASE (assign2);
16741674 TEST_CASE (assign3);
16751675 TEST_CASE (assign4); // #11019
1676+ TEST_CASE (assign5);
16761677
16771678 // Failed allocation
16781679 TEST_CASE (failedAllocation);
@@ -1919,6 +1920,29 @@ class TestMemleakStructMember : public TestFixture {
19191920 ASSERT_EQUALS (" " , errout_str ());
19201921 }
19211922
1923+ void assign5 () {
1924+ check (" struct S { int fd; };\n "
1925+ " void f() {\n "
1926+ " struct S* s = (struct S*)malloc(sizeof(struct S));\n "
1927+ " s->fd = open(\" abc\" , O_RDWR | O_NOCTTY);\n "
1928+ " free(s);\n "
1929+ " }\n "
1930+ " void g() {\n "
1931+ " struct S* s = static_cast<struct S*>(malloc(sizeof(struct S)));\n "
1932+ " s->fd = open(\" abc\" , O_RDWR | O_NOCTTY);\n "
1933+ " free(s);\n "
1934+ " }\n "
1935+ " void h() {\n "
1936+ " S* s = new S;\n "
1937+ " s->fd = open(\" abc\" , O_RDWR | O_NOCTTY);\n "
1938+ " delete s;\n "
1939+ " }\n " );
1940+ ASSERT_EQUALS (" [test.cpp:5:5]: (error) Resource leak: s.fd [resourceLeak]\n "
1941+ " [test.cpp:10:5]: (error) Resource leak: s.fd [resourceLeak]\n "
1942+ " [test.cpp:16:1]: (error) Resource leak: s.fd [resourceLeak]\n " ,
1943+ errout_str ());
1944+ }
1945+
19221946 void failedAllocation () {
19231947 check (" static struct ABC * foo()\n "
19241948 " {\n "
You can’t perform that action at this time.
0 commit comments