diff --git a/src/gc.c b/src/gc.c index 951a66ac..cf3bd75b 100644 --- a/src/gc.c +++ b/src/gc.c @@ -157,6 +157,7 @@ static void gc_mark_phase(pic_state *pic) { pic_value *stack; + pic_callinfo *ci; struct pic_env *env; int i; @@ -165,6 +166,11 @@ gc_mark_phase(pic_state *pic) gc_mark(pic, *stack); } + /* callinfo */ + for (ci = pic->cibase; ci != pic->ci; ++ci) { + gc_mark_object(pic, (struct pic_object *)ci->proc); + } + /* arena */ for (i = 0; i < pic->arena_idx; ++i) { gc_mark_object(pic, pic->arena[i]);