3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-05 21:53:23 +00:00

Fix memory leak in asserted_formulas

This commit is contained in:
Arie Gurfinkel 2018-05-28 19:03:55 -07:00
parent 723e96175b
commit 4477f7d326

View file

@ -500,6 +500,7 @@ unsigned asserted_formulas::propagate_values(unsigned i) {
void asserted_formulas::update_substitution(expr* n, proof* pr) { void asserted_formulas::update_substitution(expr* n, proof* pr) {
expr* lhs, *rhs, *n1; expr* lhs, *rhs, *n1;
proof_ref pr1(m);
if (is_ground(n) && m.is_eq(n, lhs, rhs)) { if (is_ground(n) && m.is_eq(n, lhs, rhs)) {
compute_depth(lhs); compute_depth(lhs);
compute_depth(rhs); compute_depth(rhs);
@ -510,13 +511,13 @@ void asserted_formulas::update_substitution(expr* n, proof* pr) {
} }
if (is_gt(rhs, lhs)) { if (is_gt(rhs, lhs)) {
TRACE("propagate_values", tout << "insert " << mk_pp(rhs, m) << " -> " << mk_pp(lhs, m) << "\n";); TRACE("propagate_values", tout << "insert " << mk_pp(rhs, m) << " -> " << mk_pp(lhs, m) << "\n";);
m_scoped_substitution.insert(rhs, lhs, m.proofs_enabled() ? m.mk_symmetry(pr) : nullptr); pr1 = m.proofs_enabled() ? m.mk_symmetry(pr) : nullptr;
m_scoped_substitution.insert(rhs, lhs, pr1);
return; return;
} }
TRACE("propagate_values", tout << "incompatible " << mk_pp(n, m) << "\n";); TRACE("propagate_values", tout << "incompatible " << mk_pp(n, m) << "\n";);
} }
proof_ref pr1(m); if (m.is_not(n, n1)) {
if (m.is_not(n, n1)) {
pr1 = m.proofs_enabled() ? m.mk_iff_false(pr) : nullptr; pr1 = m.proofs_enabled() ? m.mk_iff_false(pr) : nullptr;
m_scoped_substitution.insert(n1, m.mk_false(), pr1); m_scoped_substitution.insert(n1, m.mk_false(), pr1);
} }
@ -638,4 +639,3 @@ void pp(asserted_formulas & f) {
f.display(std::cout); f.display(std::cout);
} }
#endif #endif