diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-03-02 10:56:23 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-03-02 10:56:23 +0900 |
| commit | fdd92750fe7e65150b067bc5179e813e7b5e2312 (patch) | |
| tree | 4383a1227df4762e728fd02635be5084f3e19a50 /src/error.c | |
| parent | 9b176a1ca8249de38a056ad075e10277300c03a2 (diff) | |
| download | mruby-fdd92750fe7e65150b067bc5179e813e7b5e2312.tar.gz mruby-fdd92750fe7e65150b067bc5179e813e7b5e2312.zip | |
Create NoMethodError instance using `mrb_obj_new()`.
Diffstat (limited to 'src/error.c')
| -rw-r--r-- | src/error.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/error.c b/src/error.c index 3fa18fcb3..931361763 100644 --- a/src/error.c +++ b/src/error.c @@ -519,12 +519,15 @@ MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, char const* fmt, ...) { mrb_value exc; + mrb_value argv[3]; va_list ap; va_start(ap, fmt); - exc = mrb_funcall(mrb, mrb_obj_value(E_NOMETHOD_ERROR), "new", 3, - mrb_vformat(mrb, fmt, ap), mrb_symbol_value(id), args); + argv[0] = mrb_vformat(mrb, fmt, ap); + argv[1] = mrb_symbol_value(id); + argv[2] = args; va_end(ap); + exc = mrb_obj_new(mrb, E_NOMETHOD_ERROR, 3, argv); mrb_exc_raise(mrb, exc); } |
