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 );