diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -582,6 +582,7 @@ mark_context(mrb_state *mrb, struct mrb_context *c) int i; mrb_callinfo *ci; + start: if (c->status == MRB_FIBER_TERMINATED) return; /* mark VM stack */ @@ -603,7 +604,8 @@ mark_context(mrb_state *mrb, struct mrb_context *c) /* mark fibers */ mrb_gc_mark(mrb, (struct RBasic*)c->fib); if (c->prev) { - mark_context(mrb, c->prev); + c = c->prev; + goto start; } } |
