Shared TT_ENV may need to be marked; fix #3550

parent fff4a4ed
...@@ -646,7 +646,6 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj) ...@@ -646,7 +646,6 @@ gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
struct REnv *e = (struct REnv*)obj; struct REnv *e = (struct REnv*)obj;
mrb_int i, len; mrb_int i, len;
if MRB_ENV_STACK_SHARED_P(e) break;
len = MRB_ENV_STACK_LEN(e); len = MRB_ENV_STACK_LEN(e);
for (i=0; i<len; i++) { for (i=0; i<len; i++) {
mrb_gc_mark_value(mrb, e->stack[i]); mrb_gc_mark_value(mrb, e->stack[i]);
...@@ -761,6 +760,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end) ...@@ -761,6 +760,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
case MRB_TT_FIBER: case MRB_TT_FIBER:
{ {
struct mrb_context *c = ((struct RFiber*)obj)->cxt; struct mrb_context *c = ((struct RFiber*)obj)->cxt;
if (!end && c && c != mrb->root_c) { if (!end && c && c != mrb->root_c) {
mrb_callinfo *ci = c->ci; mrb_callinfo *ci = c->ci;
mrb_callinfo *ce = c->cibase; mrb_callinfo *ce = c->cibase;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment