Fix memory leak in symbol table (#209)
authorAndres Noetzli <andres.noetzli@gmail.com>
Sun, 30 Jul 2017 17:38:06 +0000 (10:38 -0700)
committerGitHub <noreply@github.com>
Sun, 30 Jul 2017 17:38:06 +0000 (10:38 -0700)
Commit 4cab39bd4f166716cd3d357a175c346afb838137 moved d_exprMap, d_typeMap,
and d_functions into SymbolTable::Implementation but did not move the deletion
of those objects from SymbolTable to the SymbolTable::Implementation
desconstructor, resulting in a memory leak. This commit fixes the issue.

src/expr/symbol_table.cpp

index ba731ec1edd5289ed45c980a96b8a70e93385de7..c760b3a802bee671b1fab24889a292c724ef02f6 100644 (file)
@@ -49,6 +49,12 @@ class SymbolTable::Implementation {
         d_typeMap(new (true) TypeMap(&d_context)),
         d_functions(new (true) CDHashSet<Expr, ExprHashFunction>(&d_context)) {}
 
+  ~Implementation() {
+    d_exprMap->deleteSelf();
+    d_typeMap->deleteSelf();
+    d_functions->deleteSelf();
+  }
+
   void bind(const string& name, Expr obj, bool levelZero) throw();
   void bindDefinedFunction(const string& name, Expr obj,
                            bool levelZero) throw();