diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-17 07:49:06 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-17 07:49:06 +0000 |
commit | 0101958745f8a18679a71f378656f0ed5184e36b (patch) | |
tree | 0f93f56756189807009888ffed76af0a1a8236a2 | |
parent | 003fa83e0cce2b1cc514acc8a9aa7e4c7278104d (diff) |
* array.c (recursive_hash): reject recursive key.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | array.c | 2 | ||||
-rw-r--r-- | test/ruby/test_array.rb | 4 |
3 files changed, 6 insertions, 4 deletions
@@ -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. @@ -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 |