diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-03-18 20:12:54 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-03-18 20:12:54 -0700 |
commit | cb107336fa2bfd2cf7f548bf82e0ff1d1484de21 (patch) | |
tree | b96b283be10e3f6ddb9cbaf182acce44f3995733 | |
parent | 25f220a4221204ccc75592097ba6e9e7cb418c4b (diff) | |
download | txr-cb107336fa2bfd2cf7f548bf82e0ff1d1484de21.tar.gz txr-cb107336fa2bfd2cf7f548bf82e0ff1d1484de21.tar.bz2 txr-cb107336fa2bfd2cf7f548bf82e0ff1d1484de21.zip |
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.
-rw-r--r-- | vm.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -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)); |