1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

eval_error.c: restore errinfo

* eval_error.c (error_print): restore errinfo for the case new
  excecption raised while printing the message.  [ruby-core:55365]
  [Bug #8501]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41205 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2013-06-10 06:35:37 +00:00
parent 222d028808
commit b82ded24cc
3 changed files with 20 additions and 1 deletions

View file

@ -1,4 +1,8 @@
Mon Jun 10 15:34:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
Mon Jun 10 15:35:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval_error.c (error_print): restore errinfo for the case new
excecption raised while printing the message. [ruby-core:55365]
[Bug #8501]
* eval_error.c (error_print): reduce calling setjmp.

View file

@ -197,6 +197,7 @@ error_print(void)
}
error:
TH_POP_TAG();
th->errinfo = errinfo;
rb_thread_raised_set(th, raised_flag);
}

View file

@ -85,8 +85,22 @@ EOW
'-e', 'raise %[SomethingElse]']) {|f|
f.read
}
status = $?
assert_match(/SomethingBad/, out, "[ruby-core:9675]")
assert_match(/SomethingElse/, out, "[ruby-core:9675]")
assert_not_predicate(status, :success?)
end
def test_exitcode_in_at_exit
bug8501 = '[ruby-core:55365] [Bug #8501]'
out = IO.popen([ruby, '-e', 'STDERR.reopen(STDOUT)',
'-e', 'o = Object.new; def o.inspect; raise "[Bug #8501]"; end',
'-e', 'at_exit{o.nope}']) {|f|
f.read
}
status = $?
assert_match(/undefined method `nope'/, out, bug8501)
assert_not_predicate(status, :success?, bug8501)
end
def test_propagate_exit_code