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

fix infinite loop bug in theory_str::new_eq_check

This commit is contained in:
Murphy Berzish 2016-07-28 17:10:41 -04:00
parent 999420485b
commit 244b611f1c

View file

@ -1452,9 +1452,7 @@ bool theory_str::new_eq_check(expr * lhs, expr * rhs) {
do {
enode * eqc_iterator2 = eqc_iterator1;
do {
if (eqc_iterator1 == eqc_iterator2) {
continue;
}
if (eqc_iterator1 != eqc_iterator2) {
// pull terms out of the enodes
app * eqc_nn1 = eqc_iterator1->get_owner();
app * eqc_nn2 = eqc_iterator2->get_owner();
@ -1469,7 +1467,9 @@ bool theory_str::new_eq_check(expr * lhs, expr * rhs) {
TRACE("t_str", tout << "inconsistency detected: " << mk_pp(eqc_nn1, m) << " and " << mk_pp(eqc_nn2, m) << " have inconsistent lengths" << std::endl;);
return false;
}
}
eqc_iterator2 = eqc_iterator2->get_next();
} while (eqc_iterator2 != eqc_root);
eqc_iterator1 = eqc_iterator1->get_next();