ruby-changes:5270
From: knu <ko1@a...>
Date: Tue, 3 Jun 2008 13:03:27 +0900 (JST)
Subject: [ruby-changes:5270] Ruby:r16769 (ruby_1_8_7): * enumerator.c (enumerator_allocate, enumerator_ptr): Properly
knu 2008-06-03 13:03:15 +0900 (Tue, 03 Jun 2008)
New Revision: 16769
Modified files:
branches/ruby_1_8_7/ChangeLog
branches/ruby_1_8_7/enumerator.c
branches/ruby_1_8_7/version.h
Log:
* 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]
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_7/enumerator.c?r1=16769&r2=16768&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_7/ChangeLog?r1=16769&r2=16768&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_7/version.h?r1=16769&r2=16768&diff_format=u
Index: ruby_1_8_7/ChangeLog
===================================================================
--- ruby_1_8_7/ChangeLog (revision 16768)
+++ ruby_1_8_7/ChangeLog (revision 16769)
@@ -1,3 +1,10 @@
+Tue Jun 3 12:51:57 2008 Akinori MUSHA <knu@i...>
+
+ * 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 10:16:40 2008 Akinori MUSHA <knu@i...>
* lib/erb.rb (ERB::Compiler::TrimScanner#scan_line): Fix a bug
Index: ruby_1_8_7/enumerator.c
===================================================================
--- ruby_1_8_7/enumerator.c (revision 16768)
+++ ruby_1_8_7/enumerator.c (revision 16769)
@@ -55,7 +55,7 @@
"wrong argument type %s (expected Enumerable::Enumerator)",
rb_obj_classname(obj));
}
- if (!ptr) {
+ if (!ptr || ptr->obj == Qundef) {
rb_raise(rb_eArgError, "uninitialized enumerator");
}
return ptr;
@@ -214,8 +214,13 @@
VALUE klass;
{
struct enumerator *ptr;
- return Data_Make_Struct(klass, struct enumerator,
- enumerator_mark, -1, ptr);
+ VALUE enum_obj;
+
+ enum_obj = Data_Make_Struct(klass, struct enumerator,
+ enumerator_mark, -1, ptr);
+ ptr->obj = Qundef;
+
+ return enum_obj;
}
static VALUE enumerator_each_i _((VALUE, VALUE));
@@ -235,8 +240,14 @@
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->meth = rb_to_id(meth);
ptr->iter = enumerator_each_i;
@@ -253,8 +264,7 @@
* used as an Enumerable object using the given object's given
* method with the given arguments.
*
- * Use of this method is not discouraged. Use Kernel#enum_for()
- * instead.
+ * Use of this method is discouraged. Use Kernel#enum_for() instead.
*/
static VALUE
enumerator_initialize(argc, argv, obj)
Index: ruby_1_8_7/version.h
===================================================================
--- ruby_1_8_7/version.h (revision 16768)
+++ ruby_1_8_7/version.h (revision 16769)
@@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2008-06-03"
#define RUBY_VERSION_CODE 187
#define RUBY_RELEASE_CODE 20080603
-#define RUBY_PATCHLEVEL 2
+#define RUBY_PATCHLEVEL 3
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/