From cb107336fa2bfd2cf7f548bf82e0ff1d1484de21 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 18 Mar 2018 20:12:54 -0700 Subject: vm: free display memory when closure reclaimed. * vm.c (vm_closure_destroy): New static function. (vm_closure_ops): Use vm_closure_destroy rather than generic cobj_destroy_free_op. --- vm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'vm.c') diff --git a/vm.c b/vm.c index 450165f0..a49b8731 100644 --- a/vm.c +++ b/vm.c @@ -214,6 +214,13 @@ static val vm_make_closure(struct vm *vm, int frsz) return closure; } +static void vm_closure_destroy(val obj) +{ + struct vm_closure *vc = coerce(struct vm_closure *, obj->co.handle); + free(vc->dspl); + free(vc); +} + static void vm_closure_mark(val obj) { struct vm_closure *vc = coerce(struct vm_closure *, obj->co.handle); @@ -850,7 +857,7 @@ static_def(struct cobj_ops vm_desc_ops = static_def(struct cobj_ops vm_closure_ops = cobj_ops_init(eq, cobj_print_op, - cobj_destroy_free_op, + vm_closure_destroy, vm_closure_mark, cobj_eq_hash_op)); -- cgit v1.2.3