summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-17 07:49:06 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-17 07:49:06 +0000
commit70400acb69b20dd950852c8886045a04a05c73f1 (patch)
tree0f93f56756189807009888ffed76af0a1a8236a2
parent985be1dd13a49271d46fa1dd68d30787ddaa4ec2 (diff)
downloadruby-70400acb69b20dd950852c8886045a04a05c73f1.tar.gz
ruby-70400acb69b20dd950852c8886045a04a05c73f1.tar.xz
ruby-70400acb69b20dd950852c8886045a04a05c73f1.zip
* array.c (recursive_hash): reject recursive key.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--array.c2
-rw-r--r--test/ruby/test_array.rb4
3 files changed, 6 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index dda6f0c99..c87714005 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Fri Jul 17 16:45:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * array.c (recursive_hash): reject recursive key.
+
Fri Jul 17 15:20:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* random.c (DIGSPERINT): fix for LP64.
diff --git a/array.c b/array.c
index d8f787c02..a0dc6434e 100644
--- a/array.c
+++ b/array.c
@@ -2884,7 +2884,7 @@ recursive_hash(VALUE ary, VALUE dummy, int recur)
VALUE n;
if (recur) {
- return LONG2FIX(0);
+ rb_raise(rb_eArgError, "recursive key for hash");
}
h = rb_hash_start(RARRAY_LEN(ary));
for (i=0; i<RARRAY_LEN(ary); i++) {
diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb
index 489b40157..2723b37c6 100644
--- a/test/ruby/test_array.rb
+++ b/test/ruby/test_array.rb
@@ -1572,9 +1572,7 @@ class TestArray < Test::Unit::TestCase
def test_hash2
a = []
a << a
- b = []
- b << b
- assert_equal(a.hash, b.hash)
+ assert_raise(ArgumentError) { a.hash }
end
def test_flatten2