summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-27 05:25:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-27 05:25:54 +0000
commit50082cbba7c4b84e370283ad49bcaae2d9523851 (patch)
treee2315d2a118ee9a3a21db7529da943ee8402fd79
parentd78fcb9272cd748b57241f7e2238dbe9a005fb44 (diff)
downloadruby-50082cbba7c4b84e370283ad49bcaae2d9523851.tar.gz
ruby-50082cbba7c4b84e370283ad49bcaae2d9523851.tar.xz
ruby-50082cbba7c4b84e370283ad49bcaae2d9523851.zip
* vm.c (vm_eval_body): if thrown exception is frozen, reraise it to
create a new instance. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17600 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--vm.c1
2 files changed, 6 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a2a43a08..3098dc892 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jun 27 14:25:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_eval_body): if thrown exception is frozen, reraise it to
+ create a new instance.
+
Fri Jun 27 13:29:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* include/ruby/intern.h (rb_str_new2, rb_tainted_str_new2,
diff --git a/vm.c b/vm.c
index 83b6ea9bd..775dbd59e 100644
--- a/vm.c
+++ b/vm.c
@@ -1072,6 +1072,7 @@ vm_eval_body(rb_thread_t *th)
err = th->errinfo;
if (state == TAG_RAISE) {
+ if (OBJ_FROZEN(err)) rb_exc_raise(err);
rb_ivar_set(err, idThrowState, INT2FIX(state));
}