Fix ASan failure in interactive_shell_black (#4827)
authorAndres Noetzli <andres.noetzli@gmail.com>
Sun, 2 Aug 2020 12:57:24 +0000 (05:57 -0700)
committerGitHub <noreply@github.com>
Sun, 2 Aug 2020 12:57:24 +0000 (07:57 -0500)
This commit fixes an issue reported by ASan for unit test
interactive_shell_black. The unit test was failing because nodes were
created in the wrong node manager. The issue was likely introduced with
e8bbee7.

src/api/cvc4cpp.cpp

index 1c15466a11715cee81668791c2bb74449d7d7efb..61d180fe4b9439da3eb81b97e9d7e45b92914894 100644 (file)
@@ -1414,13 +1414,19 @@ size_t OpHashFunction::operator()(const Op& t) const
 Term::Term() : d_solver(nullptr), d_node(new CVC4::Node()) {}
 
 Term::Term(const Solver* slv, const CVC4::Expr& e)
-    : d_solver(slv), d_node(new CVC4::Node(e))
+    : d_solver(slv)
 {
+  // Ensure that we create the node in the correct node manager.
+  NodeManagerScope scope(d_solver->getNodeManager());
+  d_node.reset(new CVC4::Node(e));
 }
 
 Term::Term(const Solver* slv, const CVC4::Node& n)
-    : d_solver(slv), d_node(new CVC4::Node(n))
+    : d_solver(slv)
 {
+  // Ensure that we create the node in the correct node manager.
+  NodeManagerScope scope(d_solver->getNodeManager());
+  d_node.reset(new CVC4::Node(n));
 }
 
 Term::~Term()