diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-08-01 13:15:02 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-08-01 13:15:02 +0900 |
| commit | d271bf0aa6e44a315802cf4246f5b92552be010a (patch) | |
| tree | 012f5f192c0aad25e3b2d401241a2b1e8f10e4a9 /src/error.c | |
| parent | 7511508a64250af30fdad4b7e342bb703e7af6c9 (diff) | |
| download | mruby-d271bf0aa6e44a315802cf4246f5b92552be010a.tar.gz mruby-d271bf0aa6e44a315802cf4246f5b92552be010a.zip | |
make mrb_funcall_argv and mrb_funcall_with_block to take mrb_sym as a method name
Diffstat (limited to 'src/error.c')
| -rw-r--r-- | src/error.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/error.c b/src/error.c index e71245509..6fe839cb2 100644 --- a/src/error.c +++ b/src/error.c @@ -144,7 +144,7 @@ exc_equal(mrb_state *mrb, mrb_value exc) if (mrb_obj_equal(mrb, exc, obj)) return mrb_true_value(); if (mrb_obj_class(mrb, exc) != mrb_obj_class(mrb, obj)) { - if ( mrb_respond_to(mrb, obj, mrb_intern(mrb, "message")) ) { + if (mrb_respond_to(mrb, obj, mrb_intern(mrb, "message"))) { mesg = mrb_funcall(mrb, obj, "message", 0); } else @@ -306,12 +306,15 @@ make_exception(mrb_state *mrb, int argc, mrb_value *argv, int isstr) case 3: n = 1; exception_call: - if (mrb_respond_to(mrb, argv[0], mrb_intern(mrb, "exception"))) { - mesg = mrb_funcall_argv(mrb, argv[0], "exception", n, argv+1); - } - else { - /* undef */ - mrb_raise(mrb, E_TYPE_ERROR, "exception class/object expected"); + { + mrb_sym exc = mrb_intern(mrb, "exception"); + if (mrb_respond_to(mrb, argv[0], exc)) { + mesg = mrb_funcall_argv(mrb, argv[0], exc, n, argv+1); + } + else { + /* undef */ + mrb_raise(mrb, E_TYPE_ERROR, "exception class/object expected"); + } } break; |
