From 1207e245eaf3fe32e3ee2089522b4afcdc881c18 Mon Sep 17 00:00:00 2001 From: Yukihiro Matz Matsumoto Date: Thu, 13 Dec 2012 00:50:02 +0900 Subject: class of TT_VOIDP should be Object --- src/class.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/class.c b/src/class.c index dcd0ae492..339920b6e 100644 --- a/src/class.c +++ b/src/class.c @@ -888,6 +888,7 @@ mrb_singleton_class(mrb_state *mrb, mrb_value v) case MRB_TT_TRUE: return mrb_obj_value(mrb->true_class); case MRB_TT_MAIN: + case MRB_TT_VOIDP: return mrb_obj_value(mrb->object_class); case MRB_TT_SYMBOL: case MRB_TT_FIXNUM: -- cgit v1.2.3 From 6dede4edf9c1748c959ad85c2320008ffeade159 Mon Sep 17 00:00:00 2001 From: skandhas Date: Thu, 13 Dec 2012 14:42:07 +0800 Subject: fix incorrect integer-overflow checkups in OP_SUB/OP_SUBI case. --- src/vm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vm.c b/src/vm.c index 92861d48c..fc251d3cb 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1390,7 +1390,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) x = mrb_fixnum(regs[a]); y = mrb_fixnum(regs[a+1]); z = x - y; - if (((x < 0) ^ (y < 0)) == 0 && (x < 0) != (z < 0)) { + if (((x < 0) ^ (y < 0)) != 0 && (x < 0) != (z < 0)) { /* integer overflow */ SET_FLT_VALUE(regs[a], (mrb_float)x - (mrb_float)y); break; @@ -1532,7 +1532,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) mrb_int y = GETARG_C(i); mrb_int z = x - y; - if (((x < 0) ^ (y < 0)) == 0 && (x < 0) != (z < 0)) { + if (((x < 0) ^ (y < 0)) != 0 && (x < 0) != (z < 0)) { /* integer overflow */ SET_FLT_VALUE(regs[a], (mrb_float)x - (mrb_float)y); break; -- cgit v1.2.3 From 4bfe1f4bf5d366bf62b8eeeb0da06d3dc54dcddb Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Fri, 14 Dec 2012 09:35:43 +0900 Subject: fgetc(3) returns int. Note: "char" is actually "unsigned char" on some platforms including NetBSD/arm. Comparing char value with EOF(-1) always fails on the platforms. --- mrbgems/generator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mrbgems/generator.c b/mrbgems/generator.c index f5b1304fa..542ba0ade 100644 --- a/mrbgems/generator.c +++ b/mrbgems/generator.c @@ -145,7 +145,7 @@ for_each_gem (char before[1024], char after[1024], { /* active GEM check */ FILE *active_gem_file; - char gem_char; + int gem_char; char gem_name[1024] = { 0 }; int char_index; char gem_list[1024][1024] = { { 0 }, { 0 } }; @@ -166,7 +166,7 @@ for_each_gem (char before[1024], char after[1024], char_index = 0; gem_index = 0; skip = FALSE; - while((gem_char = fgetc(active_gem_file)) != EOF) { + while ((gem_char = fgetc(active_gem_file)) != EOF) { if (gem_char == '\n') { /* Every line contains one active GEM */ gem_name[char_index++] = '\0'; -- cgit v1.2.3 From bf87a0f7018acf441f4b928c679bc4d2fb94954a Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Thu, 13 Dec 2012 17:23:55 +0900 Subject: rebuild binaries when mrbgem archives are updated. --- test/Makefile | 2 +- tools/mirb/Makefile | 2 +- tools/mruby/Makefile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/Makefile b/test/Makefile index 844f8cc22..f671982fd 100644 --- a/test/Makefile +++ b/test/Makefile @@ -94,7 +94,7 @@ all : $(EXE) $(MRUBY) $(TESTRB) $(TESTMRB) @echo # executable constructed using linker from object files -$(EXE) : $(OBJS) $(LIBR) +$(EXE) : $(OBJS) $(LIBR) $(GEM_ARCHIVE_FILES) $(LL) -o $@ $(LDFLAGS) $(OBJS) $(LIBR) $(GEM_ARCHIVE_FILES) $(LIBS) -include $(OBJS:.o=.d) diff --git a/tools/mirb/Makefile b/tools/mirb/Makefile index 8e26feaf3..b953038a8 100644 --- a/tools/mirb/Makefile +++ b/tools/mirb/Makefile @@ -66,7 +66,7 @@ endif all : $(LIBR) $(EXE) # executable constructed using linker from object files -$(EXE) : $(LIBR) $(OBJS) $(EXTS) +$(EXE) : $(LIBR) $(OBJS) $(GEM_ARCHIVE_FILES) $(EXTS) $(LL) -o $@ $(LDFLAGS) $(OBJS) $(LIBR) $(GEM_ARCHIVE_FILES) $(EXTS) $(LIBS) -include $(OBJS:.o=.d) diff --git a/tools/mruby/Makefile b/tools/mruby/Makefile index 0316bfb8f..55e37aafa 100644 --- a/tools/mruby/Makefile +++ b/tools/mruby/Makefile @@ -71,7 +71,7 @@ endif all : $(LIBR) $(EXE) # executable constructed using linker from object files -$(EXE) : $(LIBR) $(OBJS) $(EXTS) +$(EXE) : $(LIBR) $(OBJS) $(GEM_ARCHIVE_FILES) $(EXTS) $(LL) -o $@ $(LDFLAGS) $(OBJS) $(LIBR) $(GEM_ARCHIVE_FILES) $(EXTS) $(LIBS) -include $(OBJS:.o=.d) -- cgit v1.2.3 From ab80843880f38123c88bcbf731a5334655cd8fad Mon Sep 17 00:00:00 2001 From: Jan Berdajs Date: Fri, 14 Dec 2012 16:00:22 +0100 Subject: add mrb_closure_new_cfunc to header --- include/mruby/proc.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/mruby/proc.h b/include/mruby/proc.h index 96f7ddbd7..745d56b6b 100644 --- a/include/mruby/proc.h +++ b/include/mruby/proc.h @@ -49,6 +49,7 @@ struct RProc { struct RProc *mrb_proc_new(mrb_state*, mrb_irep*); struct RProc *mrb_proc_new_cfunc(mrb_state*, mrb_func_t); struct RProc *mrb_closure_new(mrb_state*, mrb_irep*); +struct RProc *mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int nlocals); void mrb_proc_copy(struct RProc *a, struct RProc *b); #include "mruby/khash.h" -- cgit v1.2.3