diff options
| author | mirichi <[email protected]> | 2013-06-14 20:01:03 +0900 |
|---|---|---|
| committer | mirichi <[email protected]> | 2013-06-14 20:01:03 +0900 |
| commit | a5f63e486473595d67601851f00b6bb96b377a8d (patch) | |
| tree | 8550bf598238104c6490d15ad2db20d4c103ea75 /src/gc.c | |
| parent | 4b2bdbe2cc0e3b1b0f6916bdc308933f17f74537 (diff) | |
| parent | dbc93621c94b9b2d2b437cde40d8efec7337a64d (diff) | |
| download | mruby-a5f63e486473595d67601851f00b6bb96b377a8d.tar.gz mruby-a5f63e486473595d67601851f00b6bb96b377a8d.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/gc.c')
| -rw-r--r-- | src/gc.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -184,15 +184,19 @@ mrb_malloc(mrb_state *mrb, size_t len) void* mrb_calloc(mrb_state *mrb, size_t nelem, size_t len) { - void *p = NULL; - size_t size; + void *p; - if (nelem <= SIZE_MAX / len) { + if (nelem > 0 && len > 0 && + nelem <= SIZE_MAX / len) { + size_t size; size = nelem * len; p = mrb_realloc(mrb, 0, size); - if (p && size > 0) + if (p) { memset(p, 0, size); + } + } else { + p = NULL; } return p; |
