diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-10-29 11:58:10 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-10-29 11:58:10 +0900 |
| commit | 3dc3643e34e1e9f119594ebd550f19e876d60e26 (patch) | |
| tree | a5128c2a4af92da31581419a60b2d956bc0852c9 /src | |
| parent | 34872e90d44bdde64e18b7774cf09495ec043e24 (diff) | |
| download | mruby-3dc3643e34e1e9f119594ebd550f19e876d60e26.tar.gz mruby-3dc3643e34e1e9f119594ebd550f19e876d60e26.zip | |
Marking from terminated fibers are not needed; ref #4143
The old condition marks the top-level callinfo even after the
fiber is terminated.
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -801,10 +801,10 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end) struct mrb_context *c = ((struct RFiber*)obj)->cxt; if (c && c != mrb->root_c) { - mrb_callinfo *ci = c->ci; - mrb_callinfo *ce = c->cibase; + if (!end && c->status != MRB_FIBER_TERMINATED) { + mrb_callinfo *ci = c->ci; + mrb_callinfo *ce = c->cibase; - if (!end) { while (ce <= ci) { struct REnv *e = ci->env; if (e && !is_dead(&mrb->gc, e) && |
