diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 8 |
1 files changed, 7 insertions, 1 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; } } |
