]> git.cworth.org Git - apitrace/blobdiff - trace_parser.cpp
Plugging some memory leaks
[apitrace] / trace_parser.cpp
index eb770d3ff1ac47dc21ceacae2c18de37fedbe11e..a63a31f2b195f2cd12470dcccfd473eb79021b37 100644 (file)
@@ -65,12 +65,34 @@ bool Parser::open(const char *filename) {
     return true;
 }
 
+template <typename Iter>
+inline void
+deleteAll(Iter begin, Iter end)
+{
+    while (begin != end) {
+        delete *begin;
+        ++begin;
+    }
+}
+
+template <typename Container>
+inline void
+deleteAll(const Container &c)
+{
+    deleteAll(c.begin(), c.end());
+}
 
 void Parser::close(void) {
     if (file) {
         gzclose(file);
         file = NULL;
     }
+
+    deleteAll(calls);
+    deleteAll(functions);
+    deleteAll(structs);
+    deleteAll(enums);
+    deleteAll(bitmasks);
 }