mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* enumerator.c (enumerator_allocate, enumerator_ptr): Properly
detect if the object is initialized and raise error when appropriate. (enumerator_initialize): Fix a typo in rdoc. [ruby-core:17052] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16767 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
10451cd8d4
commit
10ffed17c9
2 changed files with 23 additions and 6 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
Tue Jun 3 12:51:57 2008 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
|
* enumerator.c (enumerator_allocate, enumerator_ptr): Properly
|
||||||
|
detect if the object is initialized and raise error when
|
||||||
|
appropriate.
|
||||||
|
(enumerator_initialize): Fix a typo in rdoc. [ruby-core:17052]
|
||||||
|
|
||||||
Tue Jun 3 01:21:51 2008 Yusuke Endoh <mame@tsg.ne.jp>
|
Tue Jun 3 01:21:51 2008 Yusuke Endoh <mame@tsg.ne.jp>
|
||||||
|
|
||||||
* test/ruby/test_method.rb: add a test.
|
* test/ruby/test_method.rb: add a test.
|
||||||
|
|
22
enumerator.c
22
enumerator.c
|
@ -56,7 +56,7 @@ enumerator_ptr(VALUE obj)
|
||||||
"wrong argument type %s (expected %s)",
|
"wrong argument type %s (expected %s)",
|
||||||
rb_obj_classname(obj), rb_class2name(rb_cEnumerator));
|
rb_obj_classname(obj), rb_class2name(rb_cEnumerator));
|
||||||
}
|
}
|
||||||
if (!ptr) {
|
if (!ptr || ptr->obj == Qundef) {
|
||||||
rb_raise(rb_eArgError, "uninitialized enumerator");
|
rb_raise(rb_eArgError, "uninitialized enumerator");
|
||||||
}
|
}
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -204,8 +204,13 @@ static VALUE
|
||||||
enumerator_allocate(VALUE klass)
|
enumerator_allocate(VALUE klass)
|
||||||
{
|
{
|
||||||
struct enumerator *ptr;
|
struct enumerator *ptr;
|
||||||
return Data_Make_Struct(klass, struct enumerator,
|
VALUE enum_obj;
|
||||||
enumerator_mark, -1, ptr);
|
|
||||||
|
enum_obj = Data_Make_Struct(klass, struct enumerator,
|
||||||
|
enumerator_mark, -1, ptr);
|
||||||
|
ptr->obj = Qundef;
|
||||||
|
|
||||||
|
return enum_obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -217,7 +222,13 @@ enumerator_each_i(VALUE v, VALUE enum_obj, int argc, VALUE *argv)
|
||||||
static VALUE
|
static VALUE
|
||||||
enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv)
|
enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv)
|
||||||
{
|
{
|
||||||
struct enumerator *ptr = enumerator_ptr(enum_obj);
|
struct enumerator *ptr;
|
||||||
|
|
||||||
|
Data_Get_Struct(enum_obj, struct enumerator, ptr);
|
||||||
|
|
||||||
|
if (!ptr) {
|
||||||
|
rb_raise(rb_eArgError, "unallocated enumerator");
|
||||||
|
}
|
||||||
|
|
||||||
ptr->obj = obj;
|
ptr->obj = obj;
|
||||||
ptr->meth = rb_to_id(meth);
|
ptr->meth = rb_to_id(meth);
|
||||||
|
@ -237,8 +248,7 @@ enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv)
|
||||||
* used as an Enumerable object using the given object's given
|
* used as an Enumerable object using the given object's given
|
||||||
* method with the given arguments.
|
* method with the given arguments.
|
||||||
*
|
*
|
||||||
* Use of this method is not discouraged. Use Kernel#enum_for()
|
* Use of this method is discouraged. Use Kernel#enum_for() instead.
|
||||||
* instead.
|
|
||||||
*/
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
enumerator_initialize(int argc, VALUE *argv, VALUE obj)
|
enumerator_initialize(int argc, VALUE *argv, VALUE obj)
|
||||||
|
|
Loading…
Reference in a new issue