summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-20 01:03:15 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-20 01:03:15 +0000
commite0dcf23cd5973c9f1fdb7218cf3eac7774f1f0c2 (patch)
tree35192834d1bf4e285f3b0771251080b22ad31f41
parentbc162c69ea86378d6c0f649f2fecbf1a38bdddfb (diff)
* 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14353 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rw-r--r--bootstraptest/test_massign.rb15
-rw-r--r--bootstraptest/test_syntax.rb2
-rw-r--r--insnhelper.ci4
4 files changed, 27 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 0f6e457618..0a26fed05b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);