eval.c: preserve errinfo

* eval.c (setup_exception): preserve errinfo across calling #to_s
  method on the exception.  [ruby-core:61091] [Bug #9568]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45180 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2014-02-26 04:26:23 +00:00
parent 9a4185de25
commit 651b394a12
3 changed files with 30 additions and 0 deletions

View file

@ -78,6 +78,28 @@ class TestException < Test::Unit::TestCase
assert(!bad)
end
def test_errinfo_in_debug
bug9568 = EnvUtil.labeled_class("[ruby-core:61091] [Bug #9568]", RuntimeError) do
def to_s
require '\0'
rescue LoadError
self.class.to_s
end
end
err = EnvUtil.verbose_warning do
assert_raise(bug9568) do
$DEBUG, debug = true, $DEBUG
begin
raise bug9568
ensure
$DEBUG = debug
end
end
end
assert_include(err, bug9568.to_s)
end
def test_break_ensure
bad = true
while true