mirror of
https://github.com/Z3Prover/z3
synced 2025-08-13 06:30:54 +00:00
fix use-after-free
This commit is contained in:
parent
d26eddf776
commit
7759d05efe
1 changed files with 14 additions and 2 deletions
|
@ -803,9 +803,21 @@ namespace smt {
|
||||||
context & ctx = get_context();
|
context & ctx = get_context();
|
||||||
while (can_propagate()) {
|
while (can_propagate()) {
|
||||||
TRACE("str", tout << "propagating..." << std::endl;);
|
TRACE("str", tout << "propagating..." << std::endl;);
|
||||||
for (auto const& el : m_basicstr_axiom_todo) {
|
while(true) {
|
||||||
|
// this can potentially recursively activate itself
|
||||||
|
unsigned start_count = m_basicstr_axiom_todo.size();
|
||||||
|
ptr_vector<enode> axioms_tmp(m_basicstr_axiom_todo);
|
||||||
|
for (auto const& el : axioms_tmp) {
|
||||||
instantiate_basic_string_axioms(el);
|
instantiate_basic_string_axioms(el);
|
||||||
}
|
}
|
||||||
|
unsigned end_count = m_basicstr_axiom_todo.size();
|
||||||
|
if (end_count > start_count) {
|
||||||
|
TRACE("str", tout << "new basic string axiom terms added -- checking again" << std::endl;);
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
m_basicstr_axiom_todo.reset();
|
m_basicstr_axiom_todo.reset();
|
||||||
TRACE("str", tout << "reset m_basicstr_axiom_todo" << std::endl;);
|
TRACE("str", tout << "reset m_basicstr_axiom_todo" << std::endl;);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue