зеркало из https://github.com/github/ruby.git
* array.c (rb_ary_product): need to set the length in order to get
the entries marked. [ruby-dev:41540] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28184 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
f40d2c9670
Коммит
c22b223cb0
|
@ -1,3 +1,8 @@
|
|||
Sun Jun 6 10:44:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* array.c (rb_ary_product): need to set the length in order to get
|
||||
the entries marked. [ruby-dev:41540]
|
||||
|
||||
Sun Jun 6 08:26:01 2010 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* vm.c (Init_BareVM): call Init_native_thread here.
|
||||
|
|
1
array.c
1
array.c
|
@ -4306,6 +4306,7 @@ rb_ary_product(int argc, VALUE *argv, VALUE ary)
|
|||
RBASIC(t1)->klass = 0;
|
||||
|
||||
/* initialize the arrays of arrays */
|
||||
ARY_SET_LEN(t0, n);
|
||||
arrays[0] = ary;
|
||||
for (i = 1; i < n; i++) arrays[i] = to_ary(argv[i-1]);
|
||||
|
||||
|
|
|
@ -130,6 +130,14 @@ module EnvUtil
|
|||
return stderr
|
||||
end
|
||||
module_function :verbose_warning
|
||||
|
||||
def under_gc_stress
|
||||
stress, GC.stress = GC.stress, true
|
||||
yield
|
||||
ensure
|
||||
GC.stress = stress
|
||||
end
|
||||
module_function :under_gc_stress
|
||||
end
|
||||
|
||||
module Test
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
require 'test/unit'
|
||||
require_relative 'envutil'
|
||||
|
||||
class TestArray < Test::Unit::TestCase
|
||||
def setup
|
||||
|
@ -1515,6 +1516,13 @@ class TestArray < Test::Unit::TestCase
|
|||
@cls[1,2].product([3,4],[5,6]))
|
||||
assert_equal(@cls[[1],[2]], @cls[1,2].product)
|
||||
assert_equal(@cls[], @cls[1,2].product([]))
|
||||
|
||||
bug3394 = '[ruby-dev:41540]'
|
||||
acc = []
|
||||
EnvUtil.under_gc_stress {[1,2].product([3,4,5],[6,8]){|array| acc << array}}
|
||||
assert_equal([[1, 3, 6], [1, 3, 8], [1, 4, 6], [1, 4, 8], [1, 5, 6], [1, 5, 8],
|
||||
[2, 3, 6], [2, 3, 8], [2, 4, 6], [2, 4, 8], [2, 5, 6], [2, 5, 8]],
|
||||
acc, bug3394)
|
||||
end
|
||||
|
||||
def test_permutation
|
||||
|
|
Загрузка…
Ссылка в новой задаче