summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/mruby.h1
-rw-r--r--src/array.c8
-rw-r--r--src/crc.c2
-rw-r--r--src/node.h5
-rw-r--r--src/parse.y1
-rw-r--r--src/state.c18
-rw-r--r--src/string.c6
-rw-r--r--src/variable.c66
-rw-r--r--src/vm.c6
9 files changed, 65 insertions, 48 deletions
diff --git a/include/mruby.h b/include/mruby.h
index fe97dd055..ed746f409 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -207,6 +207,7 @@ mrb_value mrb_str_new2(mrb_state *mrb, const char *p);
mrb_state* mrb_open(void);
mrb_state* mrb_open_allocf(mrb_allocf, void *ud);
+void mrb_irep_free(mrb_state*, struct mrb_irep*);
void mrb_close(mrb_state*);
int mrb_checkstack(mrb_state*,int);
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;
}
}
diff --git a/src/crc.c b/src/crc.c
index 0451c363c..c150f966b 100644
--- a/src/crc.c
+++ b/src/crc.c
@@ -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;
}
}
}
diff --git a/src/vm.c b/src/vm.c
index 2255ebde8..e33f08a90 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -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);