diff options
| author | Masaki Muranaka <[email protected]> | 2012-07-07 12:09:59 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2012-07-07 12:09:59 +0900 |
| commit | 47407768fdf118fa6fe3ead5b088b79397603ef6 (patch) | |
| tree | abbcd93b0e148e3d64587ff1f83f5eb6a7618ff5 | |
| parent | 8268ba2755ec467d100c799dbf53c13f38fda436 (diff) | |
| download | mruby-47407768fdf118fa6fe3ead5b088b79397603ef6.tar.gz mruby-47407768fdf118fa6fe3ead5b088b79397603ef6.zip | |
Fix underlying bugs. mrb_calloc will be crashed in case "nelem == 0" or "p == NULL"
| -rw-r--r-- | src/gc.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -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; } |
