diff options
Diffstat (limited to 'src/error.c')
| -rw-r--r-- | src/error.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/error.c b/src/error.c index 1f352c853..858c70820 100644 --- a/src/error.c +++ b/src/error.c @@ -208,16 +208,24 @@ exc_debug_info(mrb_state *mrb, struct RObject *exc) void mrb_exc_raise(mrb_state *mrb, mrb_value exc) { - mrb->exc = (struct RObject*)mrb_object(exc); - exc_debug_info(mrb, mrb->exc); - if (!mrb->jmp) { - abort(); - } - longjmp(*(jmp_buf*)mrb->jmp, 1); + mrb->exc = (struct RObject*)mrb_object(exc); + exc_debug_info(mrb, mrb->exc); + if (!mrb->jmp) { + abort(); + } + longjmp(*(jmp_buf*)mrb->jmp, 1); +} + +void +mrb_raise(mrb_state *mrb, struct RClass *c, const char *msg) +{ + mrb_value mesg; + mesg = mrb_str_new2(mrb, msg); + mrb_exc_raise(mrb, mrb_exc_new3(mrb, c, mesg)); } void -mrb_raise(mrb_state *mrb, struct RClass *c, const char *fmt, ...) +mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt, ...) { va_list args; char buf[256]; @@ -369,7 +377,7 @@ exception_call: break; default: - mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments (%d for 0..3)", argc); + mrb_raisef(mrb, E_ARGUMENT_ERROR, "wrong number of arguments (%d for 0..3)", argc); break; } if (argc > 0) { @@ -391,7 +399,7 @@ mrb_make_exception(mrb_state *mrb, int argc, mrb_value *argv) void mrb_sys_fail(mrb_state *mrb, const char *mesg) { - mrb_raise(mrb, E_RUNTIME_ERROR, "%s", mesg); + mrb_raise(mrb, E_RUNTIME_ERROR, mesg); } void |
