Revert 01f78258; fix #3650

Redundant `mark_context() is far better than crashes.
parent ac442bc1
...@@ -595,8 +595,8 @@ mark_context(mrb_state *mrb, struct mrb_context *c) ...@@ -595,8 +595,8 @@ mark_context(mrb_state *mrb, struct mrb_context *c)
} }
/* mark fibers */ /* mark fibers */
mrb_gc_mark(mrb, (struct RBasic*)c->fib); mrb_gc_mark(mrb, (struct RBasic*)c->fib);
if (c->prev && c->prev->fib) { if (c->prev) {
mrb_gc_mark(mrb, (struct RBasic*)c->prev->fib); mark_context(mrb, c->prev);
} }
} }
...@@ -878,9 +878,9 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc) ...@@ -878,9 +878,9 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc)
mrb_gc_mark(mrb, (struct RBasic*)mrb->arena_err); mrb_gc_mark(mrb, (struct RBasic*)mrb->arena_err);
#endif #endif
mark_context(mrb, mrb->root_c); mark_context(mrb, mrb->c);
if (mrb->root_c != mrb->c) { if (mrb->root_c != mrb->c) {
mark_context(mrb, mrb->c); mark_context(mrb, mrb->root_c);
} }
} }
......
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