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 | 0fd3e5a4e427cfa15440649a69e78c5817cecb81 (patch) | |
tree | b96b283be10e3f6ddb9cbaf182acce44f3995733 | |
parent | a0df8cd707d2552a80222f0de0c82b1d114c8f6a (diff) | |
download | txr-0fd3e5a4e427cfa15440649a69e78c5817cecb81.tar.gz txr-0fd3e5a4e427cfa15440649a69e78c5817cecb81.tar.bz2 txr-0fd3e5a4e427cfa15440649a69e78c5817cecb81.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)); |