diff options
| -rw-r--r-- | build_config/minimal.rb | 5 | ||||
| -rw-r--r-- | mrbgems/mruby-binding-core/src/binding-core.c | 4 | ||||
| -rw-r--r-- | mrbgems/mruby-time/src/time.c | 4 | ||||
| -rw-r--r-- | src/dump.c | 78 |
4 files changed, 49 insertions, 42 deletions
diff --git a/build_config/minimal.rb b/build_config/minimal.rb new file mode 100644 index 000000000..da3660bfc --- /dev/null +++ b/build_config/minimal.rb @@ -0,0 +1,5 @@ +MRuby::CrossBuild.new('Minimal') do |conf| + toolchain :gcc + conf.cc.defines = %w(DISABLE_STDIO) + conf.bins = [] +end diff --git a/mrbgems/mruby-binding-core/src/binding-core.c b/mrbgems/mruby-binding-core/src/binding-core.c index 5563783c4..209da8bf9 100644 --- a/mrbgems/mruby-binding-core/src/binding-core.c +++ b/mrbgems/mruby-binding-core/src/binding-core.c @@ -198,8 +198,8 @@ binding_source_location(mrb_state *mrb, mrb_value self) srcloc = mrb_nil_value(); } else { - const char *fname = mrb_debug_get_filename(mrb, irep, pc); - mrb_int fline = mrb_debug_get_line(mrb, irep, pc); + const char *fname = mrb_debug_get_filename(mrb, irep, (uint32_t)pc); + mrb_int fline = mrb_debug_get_line(mrb, irep, (uint32_t)pc); if (fname && fline >= 0) { srcloc = mrb_assoc_new(mrb, mrb_str_new_cstr(mrb, fname), mrb_fixnum_value(fline)); diff --git a/mrbgems/mruby-time/src/time.c b/mrbgems/mruby-time/src/time.c index fcd5902e0..1531348de 100644 --- a/mrbgems/mruby-time/src/time.c +++ b/mrbgems/mruby-time/src/time.c @@ -214,7 +214,7 @@ typedef mrb_int mrb_sec; MRB_TIME_T_UINT ? 0 : \ (sizeof(time_t) <= 4 ? INT32_MIN : INT64_MIN) \ ) -#define MRB_TIME_MAX ( \ +#define MRB_TIME_MAX (time_t)( \ MRB_TIME_T_UINT ? (sizeof(time_t) <= 4 ? UINT32_MAX : UINT64_MAX) : \ (sizeof(time_t) <= 4 ? INT32_MAX : INT64_MAX) \ ) @@ -586,6 +586,7 @@ mrb_time_plus(mrb_state *mrb, mrb_value self) int_overflow(mrb, "addition"); } } + sec = tm->sec + sec; #endif return mrb_time_make_time(mrb, mrb_obj_class(mrb, self), sec, tm->usec+usec, tm->timezone); } @@ -629,6 +630,7 @@ mrb_time_minus(mrb_state *mrb, mrb_value self) int_overflow(mrb, "subtraction"); } } + sec = tm->sec - sec; #endif return mrb_time_make_time(mrb, mrb_obj_class(mrb, self), sec, tm->usec-usec, tm->timezone); } diff --git a/src/dump.c b/src/dump.c index e3f3320ea..51e8dca4e 100644 --- a/src/dump.c +++ b/src/dump.c @@ -23,45 +23,6 @@ static size_t get_irep_record_size_1(mrb_state *mrb, const mrb_irep *irep); # error This code cannot be built on your environment. #endif -#define OPERATOR_SYMBOL(sym_name, name) {name, sym_name, sizeof(sym_name)-1} -struct operator_symbol { - const char *name; - const char *sym_name; - uint16_t sym_name_len; -}; -static const struct operator_symbol operator_table[] = { - OPERATOR_SYMBOL("!", "not"), - OPERATOR_SYMBOL("%", "mod"), - OPERATOR_SYMBOL("&", "and"), - OPERATOR_SYMBOL("*", "mul"), - OPERATOR_SYMBOL("+", "add"), - OPERATOR_SYMBOL("-", "sub"), - OPERATOR_SYMBOL("/", "div"), - OPERATOR_SYMBOL("<", "lt"), - OPERATOR_SYMBOL(">", "gt"), - OPERATOR_SYMBOL("^", "xor"), - OPERATOR_SYMBOL("`", "tick"), - OPERATOR_SYMBOL("|", "or"), - OPERATOR_SYMBOL("~", "neg"), - OPERATOR_SYMBOL("!=", "neq"), - OPERATOR_SYMBOL("!~", "nmatch"), - OPERATOR_SYMBOL("&&", "andand"), - OPERATOR_SYMBOL("**", "pow"), - OPERATOR_SYMBOL("+@", "plus"), - OPERATOR_SYMBOL("-@", "minus"), - OPERATOR_SYMBOL("<<", "lshift"), - OPERATOR_SYMBOL("<=", "le"), - OPERATOR_SYMBOL("==", "eq"), - OPERATOR_SYMBOL("=~", "match"), - OPERATOR_SYMBOL(">=", "ge"), - OPERATOR_SYMBOL(">>", "rshift"), - OPERATOR_SYMBOL("[]", "aref"), - OPERATOR_SYMBOL("||", "oror"), - OPERATOR_SYMBOL("<=>", "cmp"), - OPERATOR_SYMBOL("===", "eqq"), - OPERATOR_SYMBOL("[]=", "aset"), -}; - static size_t get_irep_header_size(mrb_state *mrb) { @@ -1035,6 +996,45 @@ sym_name_cvar_p(const char *name, mrb_int len) return len >= 3 && name[0] == '@' && sym_name_ivar_p(name+1, len-1); } +#define OPERATOR_SYMBOL(sym_name, name) {name, sym_name, sizeof(sym_name)-1} +struct operator_symbol { + const char *name; + const char *sym_name; + uint16_t sym_name_len; +}; +static const struct operator_symbol operator_table[] = { + OPERATOR_SYMBOL("!", "not"), + OPERATOR_SYMBOL("%", "mod"), + OPERATOR_SYMBOL("&", "and"), + OPERATOR_SYMBOL("*", "mul"), + OPERATOR_SYMBOL("+", "add"), + OPERATOR_SYMBOL("-", "sub"), + OPERATOR_SYMBOL("/", "div"), + OPERATOR_SYMBOL("<", "lt"), + OPERATOR_SYMBOL(">", "gt"), + OPERATOR_SYMBOL("^", "xor"), + OPERATOR_SYMBOL("`", "tick"), + OPERATOR_SYMBOL("|", "or"), + OPERATOR_SYMBOL("~", "neg"), + OPERATOR_SYMBOL("!=", "neq"), + OPERATOR_SYMBOL("!~", "nmatch"), + OPERATOR_SYMBOL("&&", "andand"), + OPERATOR_SYMBOL("**", "pow"), + OPERATOR_SYMBOL("+@", "plus"), + OPERATOR_SYMBOL("-@", "minus"), + OPERATOR_SYMBOL("<<", "lshift"), + OPERATOR_SYMBOL("<=", "le"), + OPERATOR_SYMBOL("==", "eq"), + OPERATOR_SYMBOL("=~", "match"), + OPERATOR_SYMBOL(">=", "ge"), + OPERATOR_SYMBOL(">>", "rshift"), + OPERATOR_SYMBOL("[]", "aref"), + OPERATOR_SYMBOL("||", "oror"), + OPERATOR_SYMBOL("<=>", "cmp"), + OPERATOR_SYMBOL("===", "eqq"), + OPERATOR_SYMBOL("[]=", "aset"), +}; + static const char* sym_operator_name(const char *sym_name, mrb_int len) { |
