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

fix regression exposed by segfault2.smt2 crash

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-08-21 14:13:43 -07:00
parent e47cd27c8d
commit ebe9db14d5
3 changed files with 8 additions and 8 deletions

View file

@ -90,18 +90,18 @@ void model_core::register_decl(func_decl * d, func_interp * fi) {
void model_core::unregister_decl(func_decl * d) { void model_core::unregister_decl(func_decl * d) {
decl2expr::obj_map_entry * ec = m_interp.find_core(d); decl2expr::obj_map_entry * ec = m_interp.find_core(d);
if (ec && ec->get_data().m_value != 0) { if (ec && ec->get_data().m_value != 0) {
m_manager.dec_ref(ec->get_data().m_key);
m_manager.dec_ref(ec->get_data().m_value);
m_interp.remove(d); m_interp.remove(d);
m_const_decls.erase(d); m_const_decls.erase(d);
m_manager.dec_ref(ec->get_data().m_key);
m_manager.dec_ref(ec->get_data().m_value);
return; return;
} }
decl2finterp::obj_map_entry * ef = m_finterp.find_core(d); decl2finterp::obj_map_entry * ef = m_finterp.find_core(d);
if (ef && ef->get_data().m_value != 0) { if (ef && ef->get_data().m_value != 0) {
m_manager.dec_ref(ef->get_data().m_key);
dealloc(ef->get_data().m_value); dealloc(ef->get_data().m_value);
m_finterp.remove(d); m_finterp.remove(d);
m_func_decls.erase(d); m_func_decls.erase(d);
m_manager.dec_ref(ef->get_data().m_key);
} }
} }

View file

@ -359,8 +359,8 @@ void proto_model::complete_partial_funcs() {
// m_func_decls may be "expanded" when we invoke get_some_value. // m_func_decls may be "expanded" when we invoke get_some_value.
// So, we must not use iterators to traverse it. // So, we must not use iterators to traverse it.
for (func_decl* f : m_func_decls) { for (unsigned i = 0; i < m_func_decls.size(); i++) {
complete_partial_func(f); complete_partial_func(m_func_decls[i]);
} }
} }

View file

@ -427,7 +427,7 @@ bool theory_seq::branch_unit_variable() {
break; break;
} }
} }
CTRACE("seq", result, "branch unit variable";); CTRACE("seq", result, tout << "branch unit variable";);
return result; return result;
} }
@ -3552,7 +3552,7 @@ bool theory_seq::get_length(expr* e, rational& val) const {
} }
} }
} }
CTRACE("seq", !val.is_int(), "length is not an integer\n";); CTRACE("seq", !val.is_int(), tout << "length is not an integer\n";);
return val.is_int(); return val.is_int();
} }