Bug #5728 ยป system-exit-bool.patch
| error.c (working copy) | ||
|---|---|---|
|
/*
|
||
|
* call-seq:
|
||
|
* SystemExit.new -> system_exit
|
||
|
* SystemExit.new(status) -> system_exit
|
||
|
* SystemExit.new(status, msg) -> system_exit
|
||
|
* SystemExit.new(msg) -> system_exit
|
||
|
* SystemExit.new -> system_exit
|
||
|
* SystemExit.new(status) -> system_exit
|
||
|
* SystemExit.new(status, message) -> system_exit
|
||
|
* SystemExit.new(msg) -> system_exit
|
||
|
*
|
||
|
* Create a new +SystemExit+ exception with the given _status_ and _message_.
|
||
|
* If _status_ is not given, EXIT_SUCCESS is used.
|
||
|
*
|
||
|
* _status_ should be +true+, +false+ or an integer.
|
||
|
* +true+ means EXIT_SUCCESS and +false+ means EXIT_FAILURE.
|
||
|
*
|
||
|
* _message_ should be a string.
|
||
|
*
|
||
|
* Create a new +SystemExit+ exception with the given status and message.
|
||
|
* If status is not given, EXIT_SUCCESS is used.
|
||
|
*/
|
||
|
static VALUE
|
||
|
exit_initialize(int argc, VALUE *argv, VALUE exc)
|
||
|
{
|
||
|
VALUE status = INT2FIX(EXIT_SUCCESS);
|
||
|
if (argc > 0 && FIXNUM_P(argv[0])) {
|
||
|
status = *argv++;
|
||
|
if (argc > 0 && (FIXNUM_P(argv[0]) || argv[0] == Qtrue || argv[0] == Qfalse)) {
|
||
|
if (argv[0] == Qtrue)
|
||
|
status = INT2FIX(EXIT_SUCCESS);
|
||
|
else if (argv[0] == Qfalse)
|
||
|
status = INT2FIX(EXIT_FAILURE);
|
||
|
else
|
||
|
status = *argv++;
|
||
|
--argc;
|
||
|
}
|
||
|
rb_call_super(argc, argv);
|
||