summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 dda6f0c99f..c877140053 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 d8f787c029..a0dc6434ea 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 489b401574..2723b37c6a 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