diff --git a/ChangeLog b/ChangeLog index 60ff5f9ce4..d19f99270f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Jan 26 07:48:57 2007 Yukihiro Matsumoto + + * enumerator.c (enumerator_init_copy): need to copy internal + structure on clone and dup. [ruby-dev:30192] + Wed Jan 24 20:34:51 2007 Kouhei Sutou * test/ruby/test_iterator.rb: removed a needless workaround. diff --git a/enumerator.c b/enumerator.c index 3f176a77a9..83cdff9c58 100644 --- a/enumerator.c +++ b/enumerator.c @@ -261,6 +261,21 @@ enumerator_initialize(int argc, VALUE *argv, VALUE obj) return enumerator_init(obj, recv, meth, argc, argv); } +/* :nodoc: */ +static VALUE +enumerator_init_copy(VALUE obj, VALUE orig) +{ + struct enumerator *ptr0 = enumerator_ptr(orig); + struct enumerator *ptr1 = enumerator_ptr(obj); + + ptr1->method = ptr0->method; + ptr1->proc = ptr0->proc; + ptr1->iter = ptr0->iter; + ptr1->args = ptr0->args; + + return obj; +} + VALUE rb_enumeratorize(VALUE obj, VALUE meth, int argc, VALUE *argv) { @@ -351,6 +366,7 @@ Init_Enumerator(void) rb_define_alloc_func(rb_cEnumerator, enumerator_allocate); rb_define_method(rb_cEnumerator, "initialize", enumerator_initialize, -1); + rb_define_method(rb_cEnumerator, "initialize_copy", enumerator_init_copy, 1); rb_define_method(rb_cEnumerator, "each", enumerator_each, 0); rb_define_method(rb_cEnumerator, "with_index", enumerator_with_index, 0); rb_define_method(rb_cEnumerator, "to_splat", enumerator_to_splat, 0); diff --git a/version.h b/version.h index c109e95ca1..989ff668b0 100644 --- a/version.h +++ b/version.h @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-01-23" +#define RUBY_RELEASE_DATE "2007-01-26" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20070123 +#define RUBY_RELEASE_CODE 20070126 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 1 -#define RUBY_RELEASE_DAY 23 +#define RUBY_RELEASE_DAY 26 RUBY_EXTERN const char ruby_version[]; RUBY_EXTERN const char ruby_release_date[];