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 | |
| parent | fc52d2d6e076248c86525b30d9ea62ecfbcfb12e (diff) | |
| download | mruby-9e7ca5d94462c749b25a34bc2d23984ccd37d14d.tar.gz mruby-9e7ca5d94462c749b25a34bc2d23984ccd37d14d.zip | |
mrb might be intialized incompletely from mrbc; close #457
| -rw-r--r-- | mrblib/Makefile | 2 | ||||
| -rw-r--r-- | mrblib/error.rb | 8 | ||||
| -rw-r--r-- | src/error.c | 4 | ||||
| -rw-r--r-- | src/vm.c | 6 |
4 files changed, 10 insertions, 10 deletions
diff --git a/mrblib/Makefile b/mrblib/Makefile index 01a5a6198..c6a668dbd 100644 --- a/mrblib/Makefile +++ b/mrblib/Makefile @@ -65,7 +65,7 @@ $(MLIB) : $(CLIB) $(CLIB) : $(RLIB) $(MRBC) $(MRBC) -Bmrblib_irep -o$(DLIB) $(RLIB); $(CAT) init_$(TARGET).c $(DLIB) > $@ -$(MRBC) : ../src/opcode.h ../src/codegen.c ../src/parse.y +$(MRBC) : $(LIBR0) $(MAKE) -C ../tools/mrbc $(MAKE_FLAGS) # merge mruby sources diff --git a/mrblib/error.rb b/mrblib/error.rb index 16e88eefb..32b50da92 100644 --- a/mrblib/error.rb +++ b/mrblib/error.rb @@ -51,14 +51,6 @@ end class KeyError < IndexError end -# ISO 15.2.37 -class ScriptError < Exception -end - -# ISO 15.2.38 -class SyntaxError < ScriptError -end - class NotImplementedError < ScriptError end 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); } |
