summaryrefslogtreecommitdiff
path: root/src/expr/node_value.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_value.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_value.h')
-rw-r--r--src/expr/node_value.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/expr/node_value.h b/src/expr/node_value.h
index fbf3ff76e..b403d0c86 100644
--- a/src/expr/node_value.h
+++ b/src/expr/node_value.h
@@ -372,6 +372,18 @@ struct NodeValueIDHashFunction {
}
};/* struct NodeValueIDHashFunction */
+
+/**
+ * An equality predicate that is applicable between pointers to fully
+ * constructed NodeValues.
+ */
+struct NodeValueIDEquality {
+ inline bool operator()(const NodeValue* a, const NodeValue* b) const {
+ return a->getId() == b->getId();
+ }
+};
+
+
inline std::ostream& operator<<(std::ostream& out, const NodeValue& nv);
}/* CVC4::expr namespace */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback