зеркало из https://github.com/github/ruby.git
* array.c (recursive_equal): fix to return true when self and other
are resized to same size and the current index become out of range. * test/ruby/test_array.rb: add a test for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
e59d5667c7
Коммит
a28a060db4
|
@ -1,3 +1,11 @@
|
|||
Sun Nov 4 11:27:54 2012 Masaki Matsushita <glass.saga@gmail.com>
|
||||
|
||||
* array.c (recursive_equal): fix to return true when self and other
|
||||
are resized to same size and the current index become out of
|
||||
range.
|
||||
|
||||
* test/ruby/test_array.rb: add a test for the above.
|
||||
|
||||
Sun Nov 4 10:19:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* dir.c (file_s_fnmatch): match with expanding braces if FNM_EXTGLOB
|
||||
|
|
4
array.c
4
array.c
|
@ -3282,8 +3282,10 @@ recursive_equal(VALUE ary1, VALUE ary2, int recur)
|
|||
if (*p1 != *p2) {
|
||||
if (rb_equal(*p1, *p2)) {
|
||||
len1 = RARRAY_LEN(ary1);
|
||||
if (len1 != RARRAY_LEN(ary2) || len1 < i)
|
||||
if (len1 != RARRAY_LEN(ary2))
|
||||
return Qfalse;
|
||||
if (len1 < i)
|
||||
return Qtrue;
|
||||
p1 = RARRAY_PTR(ary1) + i;
|
||||
p2 = RARRAY_PTR(ary2) + i;
|
||||
}
|
||||
|
|
|
@ -1923,6 +1923,20 @@ class TestArray < Test::Unit::TestCase
|
|||
assert_not_equal([0, 1, 2], [0, 1, 3])
|
||||
end
|
||||
|
||||
A = Array.new(3, &:to_s)
|
||||
B = A.dup
|
||||
|
||||
def test_equal_resize
|
||||
o = Object.new
|
||||
def o.==(o)
|
||||
A.clear
|
||||
B.clear
|
||||
true
|
||||
end
|
||||
A[1] = o
|
||||
assert_equal(A, B)
|
||||
end
|
||||
|
||||
def test_hash2
|
||||
a = []
|
||||
a << a
|
||||
|
|
Загрузка…
Ссылка в новой задаче