From 47407768fdf118fa6fe3ead5b088b79397603ef6 Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Sat, 7 Jul 2012 12:09:59 +0900 Subject: Fix underlying bugs. mrb_calloc will be crashed in case "nelem == 0" or "p == NULL" --- src/gc.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gc.c b/src/gc.c index 2663e9780..5f30570de 100644 --- a/src/gc.c +++ b/src/gc.c @@ -167,10 +167,15 @@ mrb_malloc(mrb_state *mrb, size_t len) void* mrb_calloc(mrb_state *mrb, size_t nelem, size_t len) { - void *p = mrb_realloc(mrb, 0, nelem*len); + void *p; + size_t size; + + size = nelem * len; + p = mrb_realloc(mrb, 0, size); + + if (p && size > 0) + memset(p, 0, size); - if (len > 0) - memset(p, 0, nelem*len); return p; } -- cgit v1.2.3