summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
authorpyama86 <[email protected]>2018-08-06 18:15:00 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-08-25 09:17:46 +0900
commit821135e2df838a2088ffca501403c08b21d9a8cf (patch)
tree18b309c12eaa8d0c18bbf5b73bb46ecf364fb29e /src/gc.c
parent49d9fb8f41eff5e7d505f4be2f9d10f78188c97c (diff)
downloadmruby-821135e2df838a2088ffca501403c08b21d9a8cf.tar.gz
mruby-821135e2df838a2088ffca501403c08b21d9a8cf.zip
irep is released when Fiber is terminated
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gc.c b/src/gc.c
index 33d83f28e..9858e45fc 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -965,9 +965,11 @@ gc_gray_mark(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
size_t i;
mrb_callinfo *ci;
- if (!c) break;
+ if (!c || c->status == MRB_FIBER_TERMINATED) break;
+
/* mark stack */
i = c->stack - c->stbase;
+
if (c->ci) {
i += ci_nregs(c->ci);
}