summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-29 13:27:51 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-29 13:27:51 +0000
commit45ef2e8ef26f6b49b82db14e1176466447542b01 (patch)
tree44c02b952a15365f9b07050e3270f45d70682bf3
parente1b85cbf17f3da7078452890edfc9c6e8cd7c001 (diff)
* range.c: fix SEGV by ("a" .. "z").step(2 ** 30) { }.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--range.c3
2 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 3146797a3d..8054265be4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jan 29 22:27:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * range.c: fix SEGV by ("a" .. "z").step(2 ** 30) { }.
+
Tue Jan 29 21:59:16 2008 Tanaka Akira <akr@fsij.org>
* enc/euc_tw.c (euctw_islead): 0x8e is a leading byte.
diff --git a/range.c b/range.c
index 7999283b95..cc254d660a 100644
--- a/range.c
+++ b/range.c
@@ -252,8 +252,7 @@ step_i(VALUE i, void *arg)
iter[0] -= INT2FIX(1) & ~FIXNUM_FLAG;
}
else {
- VALUE one = INT2FIX(1);
- iter[0] = rb_funcall(iter[0], '-', 1, &one);
+ iter[0] = rb_funcall(iter[0], '-', 1, INT2FIX(1));
}
if (iter[0] == INT2FIX(0)) {
rb_yield(i);