summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-11 12:40:26 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-11 12:40:26 +0900
commit6dd1a570c2ee436bf20aef9e66e6c781cb222b96 (patch)
treec7f47adda64f863e7f586908960ef8f9fd6da02c
parentfff4a4ed34b2692227b0f9d5773872b8410fd08d (diff)
downloadmruby-6dd1a570c2ee436bf20aef9e66e6c781cb222b96.tar.gz
mruby-6dd1a570c2ee436bf20aef9e66e6c781cb222b96.zip
Shared TT_ENV may need to be marked; fix #3550
-rw-r--r--src/gc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/gc.c b/src/gc.c
index db70587d5..86ee65ae6 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -646,7 +646,6 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
struct REnv *e = (struct REnv*)obj;
mrb_int i, len;
- if MRB_ENV_STACK_SHARED_P(e) break;
len = MRB_ENV_STACK_LEN(e);
for (i=0; i<len; i++) {
mrb_gc_mark_value(mrb, e->stack[i]);
@@ -761,6 +760,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
case MRB_TT_FIBER:
{
struct mrb_context *c = ((struct RFiber*)obj)->cxt;
+
if (!end && c && c != mrb->root_c) {
mrb_callinfo *ci = c->ci;
mrb_callinfo *ce = c->cibase;