summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-01-31 12:41:47 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-01-31 12:41:47 +0000
commit3a9ce187de26c805d1f266666572689d2947cf37 (patch)
treee42c6a857c3e5fae2afd5d4e9960d7193989eee6
parent323d23c44b58ab5f9d6ddd177d54d6fc7f1f4217 (diff)
* vm_insnhelper.c (vm_throw): fixed infinite loop. [ruby-core:27969]
(re-commit of r26522 since forgot to add a change, sorry) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--bootstraptest/test_jump.rb12
-rw-r--r--vm_insnhelper.c2
3 files changed, 17 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index f7d97d30ef..53e5a7332a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,13 +1,13 @@
+Sun Jan 31 21:10:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_throw): fixed infinite loop. [ruby-core:27969]
+
Sun Jan 31 21:29:58 2010 Yusuke Endoh <mame@tsg.ne.jp>
* lib/rexml/text.rb (REXML::Text#initialize): do Text.check only when
parent is specified, since Text.check may need doctype. partially
revert r26518.
-Sun Jan 31 21:10:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * vm_insnhelper.c (vm_throw): fixed infinite loop. [ruby-core:27969]
-
Sun Jan 31 15:50:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
* lib/rexml/text.rb (REXML::Text#initialize): fix typo and a bug that
diff --git a/bootstraptest/test_jump.rb b/bootstraptest/test_jump.rb
index 77467337c2..bfb380e45b 100644
--- a/bootstraptest/test_jump.rb
+++ b/bootstraptest/test_jump.rb
@@ -259,3 +259,15 @@ assert_normal_exit %q{
end
end
}
+
+assert_normal_exit %q{
+ -> do
+ 1.times do
+ begin
+ raise
+ rescue
+ return
+ end
+ end
+ end.call
+}
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 54d54ff195..ae1d86d97b 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -1491,7 +1491,7 @@ vm_throw(rb_thread_t *th, rb_control_frame_t *reg_cfp,
dfp = cfp->dfp;
goto valid_return;
}
- tdfp = GC_GUARDED_PTR_REF((VALUE *)*dfp);
+ tdfp = GC_GUARDED_PTR_REF((VALUE *)*tdfp);
}
}
}