summaryrefslogtreecommitdiff
path: root/uscript/val.c
diff options
context:
space:
mode:
authoriamcheeseman <[email protected]>2026-04-14 19:35:49 -0400
committeriamcheeseman <[email protected]>2026-04-14 19:35:49 -0400
commit24e600e7c3ce6dab4c6c3f421e5d1ae35dc04bad (patch)
treeb3cf0267cb9cd9620b0c2279549300ec65108e72 /uscript/val.c
parentb60ad836c756f39eb5eafbfadae6847ee5ed5236 (diff)
microscript: add core:range()
Diffstat (limited to 'uscript/val.c')
-rw-r--r--uscript/val.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/uscript/val.c b/uscript/val.c
index 357facc..76f1376 100644
--- a/uscript/val.c
+++ b/uscript/val.c
@@ -74,6 +74,7 @@ struct us_cfunc *create_cfunc(struct us_str *name, us_cfunc_sig func, int argc)
cfunc->name = name;
cfunc->c = func;
cfunc->argc = argc;
+ cfunc->upvals = da_create(struct us_val, 0);
init_obj(wrap_cfunc(cfunc), &cfunc->header);
return cfunc;
}
@@ -116,7 +117,12 @@ void free_val(struct us_val v)
mem_free(func);
break;
}
- case VAL_CFUNC:
+ case VAL_CFUNC: {
+ struct us_cfunc *cfunc = get_cfunc(v);
+ da_free(cfunc->upvals);
+ mem_free(cfunc);
+ break;
+ }
case VAL_UPVAL:
mem_free(get_obj(v));
break;