diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-06-19 12:54:49 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-06-19 12:54:49 +0900 |
| commit | 8f9b958f1e269e6e2c58402ae0409a3a99e8bcf4 (patch) | |
| tree | 878c5d25bc9f6b80be0e4c5612849d47e42c28aa /src | |
| parent | b023acb6296d7ee55ae5e7f7bc3e1bf53f4e48dd (diff) | |
| download | mruby-8f9b958f1e269e6e2c58402ae0409a3a99e8bcf4.tar.gz mruby-8f9b958f1e269e6e2c58402ae0409a3a99e8bcf4.zip | |
raise should initialize Exception object
Diffstat (limited to 'src')
| -rw-r--r-- | src/error.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/error.c b/src/error.c index 981b2abab..b2d9a8c8d 100644 --- a/src/error.c +++ b/src/error.c @@ -71,14 +71,14 @@ static mrb_value exc_exception(mrb_state *mrb, mrb_value self) { mrb_value exc; - mrb_value *argv; + mrb_value a; int argc; - mrb_get_args(mrb, "*", &argv, &argc); + argc = mrb_get_args(mrb, "|o", &a); if (argc == 0) return self; - if (argc == 1 && mrb_obj_equal(mrb, self, argv[0])) return self; + if (mrb_obj_equal(mrb, self, a)) return self; exc = mrb_obj_clone(mrb, self); - exc_initialize(mrb, exc); + mrb_iv_set(mrb, exc, mrb_intern(mrb, "mesg"), a); return exc; } @@ -321,7 +321,7 @@ exception_call: // mrb_raise(mrb, E_TYPE_ERROR, "exception class/object expected"); //} if (mrb_respond_to(mrb, argv[0], mrb_intern(mrb, "exception"))) { - mesg = mrb_funcall(mrb, argv[0], "exception", n, argv+1); + mesg = mrb_funcall_argv(mrb, argv[0], "exception", n, argv+1); } else { /* undef */ |
