diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 8 | ||||
| -rw-r--r-- | src/crc.c | 2 | ||||
| -rw-r--r-- | src/node.h | 5 | ||||
| -rw-r--r-- | src/parse.y | 1 | ||||
| -rw-r--r-- | src/state.c | 18 | ||||
| -rw-r--r-- | src/string.c | 6 | ||||
| -rw-r--r-- | src/variable.c | 66 | ||||
| -rw-r--r-- | src/vm.c | 6 |
8 files changed, 64 insertions, 48 deletions
diff --git a/src/array.c b/src/array.c index b55a47f66..b8cd436f0 100644 --- a/src/array.c +++ b/src/array.c @@ -192,8 +192,14 @@ ary_expand_capa(mrb_state *mrb, struct RArray *a, mrb_int len) if (capa > ARY_MAX_SIZE) capa = ARY_MAX_SIZE; /* len <= capa <= ARY_MAX_SIZE */ if (capa > a->aux.capa) { + mrb_value *expanded_ptr = (mrb_value *)mrb_realloc(mrb, a->ptr, sizeof(mrb_value)*capa); + + if(!expanded_ptr) { + mrb_raise(mrb, E_RUNTIME_ERROR, "out of memory"); + } + a->aux.capa = capa; - a->ptr = (mrb_value *)mrb_realloc(mrb, a->ptr, sizeof(mrb_value)*capa); + a->ptr = expanded_ptr; } } @@ -19,7 +19,7 @@ uint16_t calc_crc_16_ccitt(unsigned char *src, int nbytes) { uint32_t crcwk = 0ul; - int ibyte, ibit; + int ibyte, ibit; for (ibyte = 0; ibyte < nbytes; ibyte++) { crcwk |= *src++; diff --git a/src/node.h b/src/node.h index 86933c224..e12672bfe 100644 --- a/src/node.h +++ b/src/node.h @@ -4,6 +4,9 @@ ** See Copyright Notice in mruby.h */ +#ifndef NODE_H +#define NODE_H + enum node_type { NODE_METHOD, NODE_FBODY, @@ -105,3 +108,5 @@ enum node_type { NODE_HEREDOC, NODE_LAST }; + +#endif /* NODE_H */ diff --git a/src/parse.y b/src/parse.y index c6b377419..62393a0bb 100644 --- a/src/parse.y +++ b/src/parse.y @@ -4485,7 +4485,6 @@ parser_yylex(parser_state *p) } pushback(p, c); if (IS_SPCARG(c)) { - arg_ambiguous(p); #if 0 p->lex_strterm = new_strterm(p, str_regexp, '/', 0); #endif diff --git a/src/state.c b/src/state.c index 1936b8aab..b6805a4a4 100644 --- a/src/state.c +++ b/src/state.c @@ -83,6 +83,17 @@ void mrb_free_symtbl(mrb_state *mrb); void mrb_free_heap(mrb_state *mrb); void +mrb_irep_free(mrb_state *mrb, struct mrb_irep *irep) +{ + if (!(irep->flags & MRB_ISEQ_NO_FREE)) + mrb_free(mrb, irep->iseq); + mrb_free(mrb, irep->pool); + mrb_free(mrb, irep->syms); + mrb_free(mrb, irep->lines); + mrb_free(mrb, irep); +} + +void mrb_close(mrb_state *mrb) { size_t i; @@ -94,12 +105,7 @@ mrb_close(mrb_state *mrb) mrb_free(mrb, mrb->stbase); mrb_free(mrb, mrb->cibase); for (i=0; i<mrb->irep_len; i++) { - if (!(mrb->irep[i]->flags & MRB_ISEQ_NO_FREE)) - mrb_free(mrb, mrb->irep[i]->iseq); - mrb_free(mrb, mrb->irep[i]->pool); - mrb_free(mrb, mrb->irep[i]->syms); - mrb_free(mrb, mrb->irep[i]->lines); - mrb_free(mrb, mrb->irep[i]); + mrb_irep_free(mrb, mrb->irep[i]); } mrb_free(mrb, mrb->irep); mrb_free(mrb, mrb->rescue); diff --git a/src/string.c b/src/string.c index 679b06f9e..cfef5730c 100644 --- a/src/string.c +++ b/src/string.c @@ -62,7 +62,7 @@ str_modify(mrb_state *mrb, struct RString *s) len = s->len; ptr = (char *)mrb_malloc(mrb, len+1); if (p) { - memcpy(ptr, p, len); + memcpy(ptr, p, len); } ptr[len] = 0; s->ptr = ptr; @@ -931,8 +931,8 @@ mrb_str_chomp_bang(mrb_state *mrb, mrb_value str) if (s->ptr[len-1] == '\n') { s->len--; if (s->len > 0 && - s->ptr[s->len-1] == '\r') { - s->len--; + s->ptr[s->len-1] == '\r') { + s->len--; } } else if (s->ptr[len-1] == '\r') { diff --git a/src/variable.c b/src/variable.c index d5331f844..8715505c3 100644 --- a/src/variable.c +++ b/src/variable.c @@ -60,19 +60,19 @@ iv_put(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value val) mrb_sym key = seg->key[i]; /* found room in last segment after last_len */ if (!seg->next && i >= t->last_len) { - seg->key[i] = sym; - seg->val[i] = val; - t->last_len = i+1; - t->size++; - return; + seg->key[i] = sym; + seg->val[i] = val; + t->last_len = i+1; + t->size++; + return; } if (!matched_seg && key == 0) { - matched_seg = seg; - matched_idx = i; + matched_seg = seg; + matched_idx = i; } else if (key == sym) { - seg->val[i] = val; - return; + seg->val[i] = val; + return; } } prev = seg; @@ -114,11 +114,11 @@ iv_get(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value *vp) mrb_sym key = seg->key[i]; if (!seg->next && i >= t->last_len) { - return FALSE; + return FALSE; } if (key == sym) { - if (vp) *vp = seg->val[i]; - return TRUE; + if (vp) *vp = seg->val[i]; + return TRUE; } } seg = seg->next; @@ -138,13 +138,13 @@ iv_del(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value *vp) mrb_sym key = seg->key[i]; if (!seg->next && i >= t->last_len) { - return FALSE; + return FALSE; } if (key == sym) { - t->size--; - seg->key[i] = 0; - if (vp) *vp = seg->val[i]; - return TRUE; + t->size--; + seg->key[i] = 0; + if (vp) *vp = seg->val[i]; + return TRUE; } } seg = seg->next; @@ -165,15 +165,15 @@ iv_foreach(mrb_state *mrb, iv_tbl *t, iv_foreach_func *func, void *p) /* no value in last segment after last_len */ if (!seg->next && i >= t->last_len) { - return FALSE; + return FALSE; } if (key != 0) { - n =(*func)(mrb, key, seg->val[i], p); - if (n > 0) return FALSE; - if (n < 0) { - t->size--; - seg->key[i] = 0; - } + n =(*func)(mrb, key, seg->val[i], p); + if (n > 0) return FALSE; + if (n < 0) { + t->size--; + seg->key[i] = 0; + } } } seg = seg->next; @@ -315,11 +315,11 @@ iv_foreach(mrb_state *mrb, iv_tbl *t, iv_foreach_func *func, void *p) if (h) { for (k = kh_begin(h); k != kh_end(h); k++) { if (kh_exist(h, k)){ - n = (*func)(mrb, kh_key(h, k), kh_value(h, k), p); - if (n > 0) return FALSE; - if (n < 0) { - kh_del(iv, h, k); - } + n = (*func)(mrb, kh_key(h, k), kh_value(h, k), p); + if (n > 0) return FALSE; + if (n < 0) { + kh_del(iv, h, k); + } } } } @@ -769,7 +769,7 @@ mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v) if (iv_get(mrb, t, sym, NULL)) { mrb_write_barrier(mrb, (struct RBasic*)c); - iv_put(mrb, t, sym, v); + iv_put(mrb, t, sym, v); return; } } @@ -816,12 +816,12 @@ const_get(mrb_state *mrb, struct RClass *base, mrb_sym sym) int retry = 0; mrb_sym cm; - L_RETRY: +L_RETRY: while (c) { if (c->iv) { t = c->iv; if (iv_get(mrb, t, sym, &v)) - return v; + return v; } c = c->super; } @@ -870,7 +870,7 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym) c2 = mrb_class_outer_module(mrb, c2); if (!c2) break; if (c2->iv && iv_get(mrb, c2->iv, sym, &v)) { - return v; + return v; } } } @@ -483,12 +483,12 @@ argnum_error(mrb_state *mrb, int num) if (mrb->ci->mid) { len = snprintf(buf, sizeof(buf), "'%s': wrong number of arguments (%d for %d)", - mrb_sym2name(mrb, mrb->ci->mid), - mrb->ci->argc, num); + mrb_sym2name(mrb, mrb->ci->mid), + mrb->ci->argc, num); } else { len = snprintf(buf, sizeof(buf), "wrong number of arguments (%d for %d)", - mrb->ci->argc, num); + mrb->ci->argc, num); } exc = mrb_exc_new(mrb, E_ARGUMENT_ERROR, buf, len); mrb->exc = (struct RObject*)mrb_object(exc); |
