summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 21:56:43 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 21:58:15 +0900
commitf75f506181d632c1abcd78e6c1330ac78ff4955b (patch)
treee824cef5687a2b00e96fe6c5818d0d4702587cf7 /src/gc.c
parentac442bc1df2ec26729077ed8d57342cb5c494a21 (diff)
downloadmruby-f75f506181d632c1abcd78e6c1330ac78ff4955b.tar.gz
mruby-f75f506181d632c1abcd78e6c1330ac78ff4955b.zip
Revert 01f7825; fix #3650
Redundant `mark_context() is far better than crashes.
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gc.c b/src/gc.c
index a3eee65e7..c326e38f9 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -595,8 +595,8 @@ mark_context(mrb_state *mrb, struct mrb_context *c)
}
/* mark fibers */
mrb_gc_mark(mrb, (struct RBasic*)c->fib);
- if (c->prev && c->prev->fib) {
- mrb_gc_mark(mrb, (struct RBasic*)c->prev->fib);
+ if (c->prev) {
+ mark_context(mrb, c->prev);
}
}
@@ -878,9 +878,9 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc)
mrb_gc_mark(mrb, (struct RBasic*)mrb->arena_err);
#endif
- mark_context(mrb, mrb->root_c);
+ mark_context(mrb, mrb->c);
if (mrb->root_c != mrb->c) {
- mark_context(mrb, mrb->c);
+ mark_context(mrb, mrb->root_c);
}
}