diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-10-31 09:06:04 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-10-31 09:10:08 +0900 |
| commit | b6598e052fda9a27692156ab8b973ce6e3374ee3 (patch) | |
| tree | cd26a94f0efd05990f6b306bf238129189e820d3 /src/gc.c | |
| parent | 77edafb04c4bc15e3c348acb0d1e7f873b7a66f0 (diff) | |
| download | mruby-b6598e052fda9a27692156ab8b973ce6e3374ee3.tar.gz mruby-b6598e052fda9a27692156ab8b973ce6e3374ee3.zip | |
Need to mark fibers referenced from `env`; fix #3837
The issue #3837 is a regression of #3819. I was mistakenly removed
a important code to mark fibers from `env`.
Diffstat (limited to 'src/gc.c')
| -rw-r--r-- | src/gc.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -657,6 +657,9 @@ 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) && e->cxt->fib) { + mrb_gc_mark(mrb, (struct RBasic*)e->cxt->fib); + } len = MRB_ENV_STACK_LEN(e); for (i=0; i<len; i++) { mrb_gc_mark_value(mrb, e->stack[i]); |
