diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | bootstraptest/test_massign.rb | 15 | ||||
-rw-r--r-- | bootstraptest/test_syntax.rb | 2 | ||||
-rw-r--r-- | insnhelper.ci | 4 |
4 files changed, 27 insertions, 3 deletions
@@ -1,3 +1,12 @@ +Thu Dec 20 09:59:27 2007 Koichi Sasada <ko1@atdot.net> + + * insnhelper.ci (vm_expandarray): fix sp increase place. + a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32581]. + + * bootstraptest/test_massign.rb: add a test for above. + + * bootstraptest/test_syntax.rb: fix last committed test. + Thu Dec 20 09:47:58 2007 Koichi Sasada <ko1@atdot.net> * bootstraptest/test_syntax.rb: add a test. diff --git a/bootstraptest/test_massign.rb b/bootstraptest/test_massign.rb index 0c73b71461..ad31729a73 100644 --- a/bootstraptest/test_massign.rb +++ b/bootstraptest/test_massign.rb @@ -159,3 +159,18 @@ assert_equal 'ok', %q{ ary = [0, 1, 2, 3, 4, 5, 6] a, b, *c, d, e, f = *ary; [a, b, c, d, e, f] } + + +# +assert_equal 'ok', %q{ + a,s=[],"aaa" + 300.times { a<<s; s=s.succ } + eval <<-END__ + GC.stress=true + Fiber.new do + #{ a.join(",") },*zzz=1 + end.resume + END__ + :ok +}, '[ruby-dev:32581]' + diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb index 37b07b0c15..2be4efb388 100644 --- a/bootstraptest/test_syntax.rb +++ b/bootstraptest/test_syntax.rb @@ -644,7 +644,7 @@ assert_equal 'true', %q{ assert_normal_exit %q{ eval "while true; return; end rescue p $!" }, '[ruby-dev:31663]' -assert_equal :ok, %q{ +assert_equal '1', %q{ def bar raise end diff --git a/insnhelper.ci b/insnhelper.ci index 142473f83e..7544345a73 100644 --- a/insnhelper.ci +++ b/insnhelper.ci @@ -1340,12 +1340,12 @@ vm_expandarray(rb_control_frame_t *cfp, VALUE ary, int num, int flag) volatile VALUE tmp_ary; int len; - cfp->sp += space_size; - if (TYPE(ary) != T_ARRAY) { ary = rb_ary_to_ary(ary); } + cfp->sp += space_size; + tmp_ary = ary; ptr = RARRAY_PTR(ary); len = RARRAY_LEN(ary); |