mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
mark also ast in parameters as GC roots. Issue #676
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
64674386de
commit
cf48eb5f72
2 changed files with 81 additions and 61 deletions
|
@ -1393,6 +1393,14 @@ static void mark_array_ref(ast_mark& mark, unsigned sz, T * const * a) {
|
|||
}
|
||||
}
|
||||
|
||||
static void mark_array_ref(ast_mark& mark, unsigned sz, parameter const * a) {
|
||||
for(unsigned i = 0; i < sz; i++) {
|
||||
if (a[i].is_ast()) {
|
||||
mark.mark(a[i].get_ast(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ast_manager::~ast_manager() {
|
||||
SASSERT(is_format_manager() || !m_family_manager.has_family(symbol("format")));
|
||||
|
@ -1423,8 +1431,10 @@ ast_manager::~ast_manager() {
|
|||
ast* n = (*it_a);
|
||||
switch (n->get_kind()) {
|
||||
case AST_SORT:
|
||||
mark_array_ref(mark, to_sort(n)->get_info()->get_num_parameters(), to_sort(n)->get_info()->get_parameters());
|
||||
break;
|
||||
case AST_FUNC_DECL:
|
||||
mark_array_ref(mark, to_func_decl(n)->get_info()->get_num_parameters(), to_func_decl(n)->get_info()->get_parameters());
|
||||
mark_array_ref(mark, to_func_decl(n)->get_arity(), to_func_decl(n)->get_domain());
|
||||
mark.mark(to_func_decl(n)->get_range(), true);
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue