diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-09-09 13:14:32 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-09-09 13:14:32 +0900 |
| commit | 9e7ca5d94462c749b25a34bc2d23984ccd37d14d (patch) | |
| tree | 12aab82d0fcc19ec57d54336d8c915d545994716 /src | |
| parent | fc52d2d6e076248c86525b30d9ea62ecfbcfb12e (diff) | |
| download | mruby-9e7ca5d94462c749b25a34bc2d23984ccd37d14d.tar.gz mruby-9e7ca5d94462c749b25a34bc2d23984ccd37d14d.zip | |
mrb might be intialized incompletely from mrbc; close #457
Diffstat (limited to 'src')
| -rw-r--r-- | src/error.c | 4 | ||||
| -rw-r--r-- | src/vm.c | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/error.c b/src/error.c index 6d05a3c6c..1adf5cb05 100644 --- a/src/error.c +++ b/src/error.c @@ -407,4 +407,8 @@ mrb_init_exception(mrb_state *mrb) mrb->eStandardError_class = mrb_define_class(mrb, "StandardError", mrb->eException_class); /* 15.2.23 */ mrb_define_class(mrb, "RuntimeError", mrb->eStandardError_class); /* 15.2.28 */ + + mrb_define_class(mrb, "RuntimeError", mrb->eStandardError_class); /* 15.2.28 */ + e = mrb_define_class(mrb, "ScriptError", mrb->eException_class); /* 15.2.37 */ + mrb_define_class(mrb, "SyntaxError", e); /* 15.2.38 */ } @@ -233,7 +233,7 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mr struct RClass *c; mrb_sym undef = 0; mrb_callinfo *ci; - int n = mrb->ci->nregs; + int n; mrb_value val; if (!mrb->jmp) { @@ -250,6 +250,10 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mr return val; } + if (!mrb->stack) { + stack_init(mrb); + } + n = mrb->ci->nregs; if (argc < 0) { mrb_raise(mrb, E_ARGUMENT_ERROR, "negative argc for funcall (%d)", argc); } |
