diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-05-09 08:49:38 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-05-09 08:49:38 +0900 |
| commit | f4cf8ea423d8f9df1d341adba63d1416779aae8a (patch) | |
| tree | ee89b697760d7b528d4767c4ccd1534dadf42bc0 /src | |
| parent | 2e4e7f7cd15e8ccd6bc6bf8608e0f167f68e2a22 (diff) | |
| download | mruby-f4cf8ea423d8f9df1d341adba63d1416779aae8a.tar.gz mruby-f4cf8ea423d8f9df1d341adba63d1416779aae8a.zip | |
partial VC support
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 4 | ||||
| -rw-r--r-- | src/hash.c | 1 | ||||
| -rw-r--r-- | src/kernel.c | 7 | ||||
| -rw-r--r-- | src/numeric.c | 4 | ||||
| -rw-r--r-- | src/re.c | 29 | ||||
| -rw-r--r-- | src/sprintf.c | 3 | ||||
| -rw-r--r-- | src/string.c | 3 | ||||
| -rw-r--r-- | src/variable.c | 2 | ||||
| -rw-r--r-- | src/vm.c | 4 |
9 files changed, 35 insertions, 22 deletions
diff --git a/src/class.c b/src/class.c index f366d4d1f..1109c1e2b 100644 --- a/src/class.c +++ b/src/class.c @@ -315,7 +315,7 @@ mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t f void mrb_define_method(mrb_state *mrb, struct RClass *c, const char *name, mrb_func_t func, int aspec) { - return mrb_define_method_id(mrb, c, mrb_intern(mrb, name), func, aspec); + mrb_define_method_id(mrb, c, mrb_intern(mrb, name), func, aspec); } void @@ -576,7 +576,7 @@ mrb_singleton_class(mrb_state *mrb, mrb_value v) void mrb_define_class_method(mrb_state *mrb, struct RClass *c, const char *name, mrb_func_t func, int aspec) { - return mrb_define_method_id(mrb, c->c, mrb_intern(mrb, name), func, aspec); + mrb_define_method_id(mrb, c->c, mrb_intern(mrb, name), func, aspec); } struct RProc* diff --git a/src/hash.c b/src/hash.c index cb34dae75..018210b78 100644 --- a/src/hash.c +++ b/src/hash.c @@ -37,6 +37,7 @@ mrb_hash_ht_hash_equal(mrb_state *mrb, mrb_value a, mrb_value b) { return mrb_equal(mrb, a, b); } + KHASH_INIT(ht, mrb_value, mrb_value, 1, mrb_hash_ht_hash_func, mrb_hash_ht_hash_equal); mrb_value mrb_exec_recursive_paired(mrb_state *mrb, mrb_value (*func) (mrb_state *, mrb_value, mrb_value, int), diff --git a/src/kernel.c b/src/kernel.c index b36ed56b8..8ae04de32 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -729,9 +729,10 @@ mrb_value mrb_obj_ivar_get(mrb_state *mrb, mrb_value self) { mrb_value arg; + mrb_sym id; mrb_get_args(mrb, "o", &arg); - mrb_sym id = mrb_to_id(mrb, arg); + id = mrb_to_id(mrb, arg); //if (!mrb_is_instance_id(id)) { // mrb_name_error(mrb, id, "`%s' is not allowed as an instance variable name", mrb_sym2name(mrb, id)); @@ -797,7 +798,7 @@ mrb_obj_instance_variables(mrb_state *mrb, mrb_value self) { mrb_value ary; kh_iv_t *h = RCLASS_IV_TBL(self); - int i; + khint_t i; const char* p; ary = mrb_ary_new(mrb); @@ -924,7 +925,7 @@ mrb_f_loop(mrb_state *mrb, mrb_value self) static void method_entry_loop(mrb_state *mrb, struct RClass* klass, mrb_value ary) { - int i; + khint_t i; khash_t(mt) *h = klass->mt; if (!h) return; diff --git a/src/numeric.c b/src/numeric.c index 054e09603..132da1553 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -1084,7 +1084,7 @@ fix_to_f(mrb_state *mrb, mrb_value num) */ /* ------------------------------------------------------------------------*/ static mrb_int -flt2big(mrb_state *mrb, float d) +flt2big(mrb_state *mrb, mrb_float d) { mrb_int z; @@ -1099,7 +1099,7 @@ flt2big(mrb_state *mrb, float d) } mrb_value -mrb_flt2big(mrb_state *mrb, float d) +mrb_flt2big(mrb_state *mrb, mrb_float d) { return mrb_fixnum_value(flt2big(mrb, d)); } @@ -85,9 +85,9 @@ mrb_reg_s_new_instance(mrb_state *mrb, /*int argc, mrb_value *argv, */mrb_value //mrb_obj_call_init(obj, argc, argv);...mrb_funcall2(obj, idInitialize, argc, argv); mrb_value argv[16]; int argc; + struct RRegexp *re; mrb_get_args(mrb, "*", &argv, &argc); - struct RRegexp *re; re = mrb_obj_alloc(mrb, MRB_TT_REGEX, mrb->regex_class); re->ptr = 0; re->src = 0; @@ -1861,12 +1861,16 @@ mrb_match_begin(mrb_state *mrb, mrb_value match/*, mrb_value n*/) { mrb_value argv[16]; int argc; - mrb_get_args(mrb, "*", &argv, &argc); mrb_value n = argv[0]; - int i = match_backref_number(mrb, match, n); - struct re_registers *regs = RMATCH_REGS(match); + int i; + struct re_registers *regs; match_check(mrb, match); + mrb_get_args(mrb, "*", &argv, &argc); + n = argv[0]; + i = match_backref_number(mrb, match, n); + regs = RMATCH_REGS(match); + if (i < 0 || regs->num_regs <= i) mrb_raise(mrb, E_INDEX_ERROR, "index %d out of matches", i); @@ -1944,12 +1948,16 @@ mrb_match_end(mrb_state *mrb, mrb_value match/*, mrb_value n*/) { mrb_value argv[16]; int argc; - mrb_get_args(mrb, "*", &argv, &argc); - mrb_value n = argv[0]; - int i = match_backref_number(mrb, match, n); - struct re_registers *regs = RMATCH_REGS(match); + mrb_value n; + int i; + struct re_registers *regs; match_check(mrb, match); + mrb_get_args(mrb, "*", &argv, &argc); + n = argv[0]; + i = match_backref_number(mrb, match, n); + regs = RMATCH_REGS(match); + if (i < 0 || regs->num_regs <= i) mrb_raise(mrb, E_INDEX_ERROR, "index %d out of matches", i); @@ -2050,11 +2058,12 @@ mrb_match_offset(mrb_state *mrb, mrb_value match/*, mrb_value n*/) { mrb_value n; struct re_registers *regs = RMATCH_REGS(match); + int i; + match_check(mrb, match); mrb_get_args(mrb, "o", &n); - int i = match_backref_number(mrb, match, n); + i = match_backref_number(mrb, match, n); - match_check(mrb, match); if (i < 0 || regs->num_regs <= i) mrb_raise(mrb, E_INDEX_ERROR, "index %d out of matches", i); diff --git a/src/sprintf.c b/src/sprintf.c index fdf484ba0..975f26f56 100644 --- a/src/sprintf.c +++ b/src/sprintf.c @@ -600,6 +600,7 @@ retry: { const char *start = p; char term = (*p == '<') ? '>' : '}'; + mrb_value symname; for (; p < end && *p != term; ) p++; @@ -607,7 +608,7 @@ retry: mrb_raise(mrb, E_ARGUMENT_ERROR, "name%.*s after <%s>", (int)(p - start + 1), start, mrb_sym2name(mrb, id)); } - mrb_value symname = mrb_str_new(mrb, start + 1, p - start - 1); + symname = mrb_str_new(mrb, start + 1, p - start - 1); id = mrb_intern(mrb, RSTRING_PTR(symname)); nextvalue = GETNAMEARG(mrb_symbol_value(id), start, (int)(p - start + 1)); if (UNDEF_P(nextvalue)) { diff --git a/src/string.c b/src/string.c index 183763bf2..dc7fdfae8 100644 --- a/src/string.c +++ b/src/string.c @@ -3843,6 +3843,7 @@ mrb_cstr_to_inum(mrb_state *mrb, const char *str, int base, int badcheck) // long i; // mrb_value z; // BDIGIT *zds; + unsigned long val; #undef ISDIGIT #define ISDIGIT(c) ('0' <= (c) && (c) <= '9') @@ -3958,7 +3959,7 @@ mrb_cstr_to_inum(mrb_state *mrb, const char *str, int base, int badcheck) } len *= strlen(str)*sizeof(char); - unsigned long val = strtoul((char*)str, &end, base); + val = strtoul((char*)str, &end, base); if (badcheck) { if (end == str) goto bad; /* no number */ diff --git a/src/variable.c b/src/variable.c index 2e12bd156..e769eaba0 100644 --- a/src/variable.c +++ b/src/variable.c @@ -350,7 +350,7 @@ mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self) { char buf[3]; - int i; + khint_t i; struct kh_iv *h = mrb->globals; mrb_value ary = mrb_ary_new(mrb); @@ -44,7 +44,7 @@ stack_init(mrb_state *mrb) static void stack_extend(mrb_state *mrb, int room, int keep) { - size_t size, off; + int size, off; if (mrb->stack + room > mrb->stend) { size = mrb->stend - mrb->stbase; @@ -1370,7 +1370,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) } else { struct RArray *ary = mrb_ary_ptr(v); - size_t len = ary->len; + int len = ary->len; int i; if (len > pre + post) { |
