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:
parent
222d028808
commit
b82ded24cc
3 changed files with 20 additions and 1 deletions
|
@ -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.
|
* eval_error.c (error_print): reduce calling setjmp.
|
||||||
|
|
||||||
|
|
|
@ -197,6 +197,7 @@ error_print(void)
|
||||||
}
|
}
|
||||||
error:
|
error:
|
||||||
TH_POP_TAG();
|
TH_POP_TAG();
|
||||||
|
th->errinfo = errinfo;
|
||||||
rb_thread_raised_set(th, raised_flag);
|
rb_thread_raised_set(th, raised_flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,8 +85,22 @@ EOW
|
||||||
'-e', 'raise %[SomethingElse]']) {|f|
|
'-e', 'raise %[SomethingElse]']) {|f|
|
||||||
f.read
|
f.read
|
||||||
}
|
}
|
||||||
|
status = $?
|
||||||
assert_match(/SomethingBad/, out, "[ruby-core:9675]")
|
assert_match(/SomethingBad/, out, "[ruby-core:9675]")
|
||||||
assert_match(/SomethingElse/, 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
|
end
|
||||||
|
|
||||||
def test_propagate_exit_code
|
def test_propagate_exit_code
|
||||||
|
|
Loading…
Reference in a new issue