diff --git a/src/gc.c b/src/gc.c index b6c1342..57ea4d4 100644 --- a/src/gc.c +++ b/src/gc.c @@ -99,13 +99,16 @@ V gc_collect(Gc *gc) { obj->tail = forward(gc, obj->tail); break; } - case TYPE_CLOS: { + case TYPE_CLOS: + case TYPE_MAC: { Cl *obj = (Cl *)(hdr + 1); obj->args = forward(gc, obj->args); obj->body = forward(gc, obj->body); obj->env = forward(gc, obj->env); break; } + case TYPE_STR: + break; case TYPE_FWD: fprintf(stderr, "fatal GC error: forwarding pointer in to-space\n"); abort(); diff --git a/src/main.c b/src/main.c index 8cdac9d..0b26179 100644 --- a/src/main.c +++ b/src/main.c @@ -24,6 +24,7 @@ int main(void) { error_print(&interp); } gc_rootreset(&interp.gc, mark); + gc_collect(&interp.gc); nexttoken(&lex); }