From 11674f4a3e25b3bb5079d648b7feabe16c25e9b4 Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 11 Oct 2006 08:06:16 +0000 Subject: * array.c: revert modify check during iteration. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 ----- array.c | 34 +++++++++++++--------------------- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0a9a03ce7..746fbabce5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,11 +14,6 @@ Wed Oct 11 15:03:55 2006 Akinori MUSHA recursive calls, but call initialize() when reset() is not defined in a subclass. -Wed Oct 11 14:58:44 2006 Yukihiro Matsumoto - - * array.c (rb_ary_each): prohibit array modification during each - iteration. [ruby-core:09104] - Wed Oct 11 14:56:10 2006 Yukihiro Matsumoto * ext/digest/sha1/sha1ossl.h: libssl 0.9.8c-3 defines no diff --git a/array.c b/array.c index d4957a95b3..5adb775207 100644 --- a/array.c +++ b/array.c @@ -1227,24 +1227,6 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary) return ary; } -VALUE -each_internal(VALUE ary) -{ - long i; - - for (i=0; i array @@ -1263,9 +1245,12 @@ iter_unlock(VALUE ary) VALUE rb_ary_each(VALUE ary) { + long i; + RETURN_ENUMERATOR(ary, 0, 0); - FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during each */ - rb_ensure(each_internal, ary, iter_unlock, ary); + for (i=0; i array @@ -1660,7 +1652,7 @@ rb_ary_sort_bang(VALUE ary) rb_ary_modify(ary); if (RARRAY_LEN(ary) > 1) { FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during sort */ - rb_ensure(sort_internal, ary, iter_unlock, ary); + rb_ensure(sort_internal, ary, sort_unlock, ary); } return ary; } -- cgit v1.2.3