diff --git a/src/ast/polymorphism_util.cpp b/src/ast/polymorphism_util.cpp index 62dd4e9494..555c697b34 100644 --- a/src/ast/polymorphism_util.cpp +++ b/src/ast/polymorphism_util.cpp @@ -39,11 +39,13 @@ namespace polymorphism { } unsigned n = s->get_num_parameters(); vector ps; + sort_ref_vector pin(m); // keep substituted sub-sorts alive until mk_sort below for (unsigned i = 0; i < n; ++i) { auto &p = s->get_parameter(i); if (p.is_ast() && is_sort(p.get_ast())) { - sort_ref s = (*this)(to_sort(p.get_ast())); - ps.push_back(parameter(s.get())); + sort_ref ss = (*this)(to_sort(p.get_ast())); + pin.push_back(ss); + ps.push_back(parameter(ss.get())); } else ps.push_back(p);