summaryrefslogtreecommitdiff
path: root/src/expr/node_manager.h
diff options
context:
space:
mode:
authorTim King <taking@google.com>2016-11-06 16:05:29 -0800
committerTim King <taking@google.com>2016-11-06 16:06:53 -0800
commit8be2d02f510e329d88e38889720334c277bf268c (patch)
tree60ffaa576d6a63beafc8ac8c5ea3d66f59f67b0b /src/expr/node_manager.h
parent4961abfa9bec88a2e15fc3078e2bd8a5bb258f93 (diff)
This switches the ZombieSet in the NodeManager to use NodeValue's id for equality comparison. The previously used function NodeValueEq incorrectly identified VARIABLE nodes as being equal. This meant that on hash collisions these nodes could leak memory.
Diffstat (limited to 'src/expr/node_manager.h')
-rw-r--r--src/expr/node_manager.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/expr/node_manager.h b/src/expr/node_manager.h
index 0b3830f4b..aaffeb322 100644
--- a/src/expr/node_manager.h
+++ b/src/expr/node_manager.h
@@ -96,7 +96,7 @@ class NodeManager {
expr::NodeValuePoolEq> NodeValuePool;
typedef __gnu_cxx::hash_set<expr::NodeValue*,
expr::NodeValueIDHashFunction,
- expr::NodeValueEq> ZombieSet;
+ expr::NodeValueIDEquality> ZombieSet;
static CVC4_THREADLOCAL(NodeManager*) s_current;
@@ -268,7 +268,7 @@ class NodeManager {
Debug("gc") << (d_inReclaimZombies ? " [CURRENTLY-RECLAIMING]" : "")
<< std::endl;
}
- d_zombies.insert(nv);// FIXME multithreading
+ d_zombies.insert(nv); // FIXME multithreading
if(safeToReclaimZombies()) {
if(d_zombies.size() > 5000) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback