aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-09-10 05:05:49 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-09-10 05:05:49 +0000
commitb3fc59837aa53c67e8167700b27ad79feaa30e33 (patch)
treeb1d0a4ac5b1c6bd7fa724eead39b3ca12c277910
parentc19fafb0a45cc30b04fdeb9eb5b5fb8a6d80be79 (diff)
downloadruby-b3fc59837aa53c67e8167700b27ad79feaa30e33.tar.gz
* array.c (rb_ary_cycle): avoid infinite loop for empty array.
based on a patch from David Flanagan. [ruby-core:12085] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--array.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 9c5f3fe108..440d70f729 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Sep 10 13:44:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_cycle): avoid infinite loop for empty array.
+ based on a patch from David Flanagan. [ruby-core:12085]
+
Mon Sep 10 01:21:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* marshal.c (r_object0): struct allocation first to check if a
diff --git a/array.c b/array.c
index 3b9a294d95..6ab12a4d76 100644
--- a/array.c
+++ b/array.c
@@ -2939,7 +2939,7 @@ rb_ary_cycle(VALUE ary)
long i;
RETURN_ENUMERATOR(ary, 0, 0);
- for (;;) {
+ while (RARRAY_LEN(ary) > 0) {
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(RARRAY_PTR(ary)[i]);
}