diff options
author | Tim King <taking@google.com> | 2016-11-06 16:05:29 -0800 |
---|---|---|
committer | Tim King <taking@google.com> | 2016-11-06 16:06:53 -0800 |
commit | 8be2d02f510e329d88e38889720334c277bf268c (patch) | |
tree | 60ffaa576d6a63beafc8ac8c5ea3d66f59f67b0b /src/expr/node_value.h | |
parent | 4961abfa9bec88a2e15fc3078e2bd8a5bb258f93 (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.h | 12 |
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 */ |