summaryrefslogtreecommitdiff
path: root/enumerator.c
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2022-12-01 23:00:33 +1300
committerGitHub <noreply@github.com>2022-12-01 23:00:33 +1300
commit0436f1e15a8e79ffef5ea412ac1312cbf9f063e6 (patch)
tree456611e5ae13d2c1312a61532ab7a79d642564b6 /enumerator.c
parent9869bd1d612b489df806cf95bcb56965a02424e0 (diff)
downloadruby-0436f1e15a8e79ffef5ea412ac1312cbf9f063e6.tar.gz
Introduce `Fiber#storage` for inheritable fiber-scoped variables. (#6612)
Diffstat (limited to 'enumerator.c')
-rw-r--r--enumerator.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/enumerator.c b/enumerator.c
index 4d2d73240e..a0c51b585c 100644
--- a/enumerator.c
+++ b/enumerator.c
@@ -766,7 +766,8 @@ next_init(VALUE obj, struct enumerator *e)
{
VALUE curr = rb_fiber_current();
e->dst = curr;
- e->fib = rb_fiber_new(next_i, obj);
+ // We inherit the fiber storage by reference, not by copy, by specifying Qfalse here.
+ e->fib = rb_fiber_new_storage(next_i, obj, Qfalse);
e->lookahead = Qundef;
}