From 07655c31bd0d7f0813dd8a784c63c5bca98f5c44 Mon Sep 17 00:00:00 2001 From: Laria Carolin Chabowski Date: Sun, 26 Feb 2023 16:57:02 +0100 Subject: [PATCH] Make function's closure scope optional --- src/value.c | 4 +++- src/value.h | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/value.c b/src/value.c index f30963d..10d4a1f 100644 --- a/src/value.c +++ b/src/value.c @@ -856,7 +856,9 @@ apfl_gc_func_traverse(struct function* function, gc_visitor cb, void *opaque) cb(opaque, GC_OBJECT_FROM(sub->matcher, GC_TYPE_MATCHER)); } } - cb(opaque, GC_OBJECT_FROM(function->scope, GC_TYPE_SCOPE)); + if (function->scope != NULL) { + cb(opaque, GC_OBJECT_FROM(function->scope, GC_TYPE_SCOPE)); + } if (function->name != NULL) { cb(opaque, GC_OBJECT_FROM(function->name, GC_TYPE_STRING)); } diff --git a/src/value.h b/src/value.h index 281c8e4..47a825e 100644 --- a/src/value.h +++ b/src/value.h @@ -51,7 +51,7 @@ struct function { struct subfunction *subfunctions; size_t subfunctions_len; size_t subfunctions_cap; - struct scope *scope; + struct scope *scope; // Can be NULL struct apfl_string *name; int line_defined; struct apfl_string *filename; @@ -148,7 +148,7 @@ void apfl_dict_deinit(struct dict_header *); struct function *apfl_func_new( struct gc *, size_t cap, - struct scope *, + struct scope *, // Can be NULL int line_defined, struct apfl_string *filename );