diff options
author | Benoit Daloze <eregontp@gmail.com> | 2022-12-20 17:59:46 +0100 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2022-12-20 19:32:23 +0100 |
commit | 45175962a6fd74ab2e9ba92f1280f3987af25494 (patch) | |
tree | 7a4fcccfd76b12ffdc853a93822ba74b56b4e6e6 /cont.c | |
parent | 88040063d0ec8aa64e0de2a3afae7286ec53bfdb (diff) |
Never use the storage of another Fiber, that violates the whole design
* See https://bugs.ruby-lang.org/issues/19078#note-30
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6972
Diffstat (limited to 'cont.c')
-rw-r--r-- | cont.c | 17 |
1 files changed, 1 insertions, 16 deletions
@@ -2185,9 +2185,6 @@ fiber_initialize(VALUE self, VALUE proc, struct fiber_pool * fiber_pool, unsigne // The default, inherit storage (dup) from the current fiber: storage = inherit_fiber_storage(); } - else if (storage == Qfalse) { - storage = current_fiber_storage(); - } else /* nil, hash, etc. */ { fiber_storage_validate(storage); storage = rb_obj_dup(storage); @@ -2299,18 +2296,6 @@ rb_fiber_initialize_kw(int argc, VALUE* argv, VALUE self, int kw_splat) * end.resume * Fiber[:x] # => 1 * - * If the <tt>storage</tt> is <tt>false</tt>, this function uses the current - * fiber's storage by reference. This is used for Enumerator to create - * hidden fiber. - * - * Fiber[:count] = 0 - * enumerator = Enumerator.new do |y| - * loop{y << (Fiber[:count] += 1)} - * end - * Fiber[:count] # => 0 - * enumerator.next # => 1 - * Fiber[:count] # => 1 - * * If the given <tt>storage</tt> is <tt>nil</tt>, this function will lazy * initialize the internal storage, which starts as an empty hash. * @@ -2322,7 +2307,7 @@ rb_fiber_initialize_kw(int argc, VALUE* argv, VALUE self, int kw_splat) * Otherwise, the given <tt>storage</tt> is used as the new fiber's storage, * and it must be an instance of Hash. * - * Explicitly using `storage: true/false` is currently experimental and may + * Explicitly using `storage: true` is currently experimental and may * change in the future. */ static VALUE |