Skip to content

Commit f1e0950

Browse files
fix several crashes exposed by QF_UFDTNIA benchmark sets
1 parent bfe4673 commit f1e0950

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/ast/sls/sls_datatype_plugin.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ namespace sls {
580580
}
581581
return false;
582582
}
583-
if (dt.get_constructor_is(f))
583+
if (dt.is_is(f))
584584
return false;
585585
return true;
586586
}
@@ -895,16 +895,19 @@ namespace sls {
895895
if (!is_app(e) || to_app(e)->get_family_id() != m_fid)
896896
return ctx.get_value(e);
897897
auto w = eval1(e);
898-
m_eval.set(e->get_id(), w);
898+
m_eval.setx(e->get_id(), w);
899899
return w;
900900
}
901901

902902
expr_ref datatype_plugin::eval_accessor(func_decl* f, expr* t) {
903903
auto& t2val = m_eval_accessor[f];
904904
if (!t2val.contains(t)) {
905+
if (!m_model)
906+
m_model = alloc(model, m);
905907
auto val = m_model->get_some_value(f->get_range());
906908
m.inc_ref(t);
907909
m.inc_ref(val);
910+
t2val.insert(t, val);
908911
}
909912
return expr_ref(t2val[t], m);
910913
}
@@ -962,7 +965,7 @@ namespace sls {
962965

963966
void datatype_plugin::set_eval0(expr* e, expr* value) {
964967
if (dt.is_datatype(e->get_sort()))
965-
m_eval[e->get_id()] = value;
968+
m_eval.setx(e->get_id(), value);
966969
else
967970
ctx.set_value(e, value);
968971
}

0 commit comments

Comments
 (0)