From 4df2827d58f92ea2a287ac780d6c32a0cdf50b6e Mon Sep 17 00:00:00 2001 From: wyhaines Date: Mon, 21 Jun 2010 20:32:00 +0000 Subject: eval.c: Bug #1886 [ruby-core:24767]; ensure that rb_exc_raise and rb_exc_fatal require an exception object. Backport of r24403. test/ruby/test_exception.rb: test for exception change. Backport of r24404. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@28374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 ++++++- eval.c | 2 ++ test/ruby/test_exception.rb | 9 +++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d465a0c60c..368b9f7283 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ +Tue Jun 22 04:29:00 Kirk Haines + + * eval.c: Bug #1886 [ruby-core:24767]; ensure that rb_exc_raise and rb_exc_fatal require an exception object. Backport of r24403. + * test/ruby/test_exception.rb: test for exception change. Backport of r24404. + Sat Jun 12 07:34:00 Kirk Haines - * configure.in: Backport #1710 [ruby-core:24104]; backport of r20573 to clean up handling of LIBPATHFLAG. + * configure.in: Backport #1710 [ruby-core:24104]; backport of r20573 to clean up handling of LIBPATHFLAG. r28291 Thu Jun 10 22:50:00 Kirk Haines diff --git a/eval.c b/eval.c index 4b6e5c3440..b2f671bfd6 100644 --- a/eval.c +++ b/eval.c @@ -4657,6 +4657,7 @@ void rb_exc_raise(mesg) VALUE mesg; { + mesg = rb_make_exception(1, &mesg); rb_longjmp(TAG_RAISE, mesg); } @@ -4664,6 +4665,7 @@ void rb_exc_fatal(mesg) VALUE mesg; { + mesg = rb_make_exception(1, &mesg); rb_longjmp(TAG_FATAL, mesg); } diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index 4c27c52f3c..b31053f03e 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -1,5 +1,11 @@ require 'test/unit' +class ZeroDivisionError + def self.new(message) + 42 + end +end + class TestException < Test::Unit::TestCase def test_exception begin @@ -21,6 +27,9 @@ class TestException < Test::Unit::TestCase end assert(true) + e = assert_raise(TypeError) { 1/0 } + assert_equal('exception class/object expected', e.message) + # exception in rescue clause $string = "this must be handled no.3" e = assert_raises(RuntimeError) do -- cgit v1.2.1