diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-05-14 11:45:00 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-05-14 11:45:00 +0000 |
commit | dc6d7cc58e78903e8309ff94c9e7112d661646ee (patch) | |
tree | 2c972cea1aa44ce2699460c5e89be466bc732854 /object.c | |
parent | 7334e2f8368f2eae97fe4e3058ba3470768c4b69 (diff) |
object.c: use a sized enumerator with #yield_self
* object.c (rb_obj_size): The #yield_self Enumerator instance
always has a #count of `1`. This provides a lazy #size of `1`
to match the count instead of `nil`. [Fix GH-1615]
Author: Shannon Skipper <[email protected]>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -497,6 +497,12 @@ rb_obj_itself(VALUE obj) return obj; } +static VALUE +rb_obj_size(VALUE self, VALUE args, VALUE obj) +{ + return LONG2FIX(1); +} + /* * call-seq: * obj.yield_self {|_obj|...} -> an_object @@ -510,7 +516,7 @@ rb_obj_itself(VALUE obj) static VALUE rb_obj_yield_self(VALUE obj) { - RETURN_ENUMERATOR(obj, 0, 0); + RETURN_SIZED_ENUMERATOR(obj, 0, 0, rb_obj_size); return rb_yield_values2(1, &obj); } |