3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-17 15:39:27 +00:00

Deriving by allchar should not crash

This commit is contained in:
CEisenhofer 2026-04-09 11:48:35 +02:00
parent 8eb0ac29d9
commit 38d725dc5a
2 changed files with 10 additions and 6 deletions

View file

@ -559,9 +559,10 @@ namespace euf {
if (ele_sort != elem_expr->get_sort()) {
// std::cout << "Different sorts: " << ele_sort->get_name() << " vs " << elem_expr->get_sort()->get_name() << std::endl;
expr* lo = nullptr, *hi = nullptr;
if (m_seq.re.is_full_char(elem_expr))
return nullptr;
if (m_seq.re.is_range(elem_expr, lo, hi) && lo) {
if (m_seq.re.is_full_char(elem_expr)) {
elem_expr = m_seq.str.mk_char(0);
}
else if (m_seq.re.is_range(elem_expr, lo, hi) && lo) {
expr* lo_ch = nullptr;
zstring zs;
if (m_seq.str.is_unit(lo, lo_ch))
@ -579,8 +580,7 @@ namespace euf {
}
expr_ref result = m_rewriter.mk_derivative(elem_expr, re_expr);
if (!result)
return nullptr;
SASSERT(result);
return mk(result);
}