diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-07-07 08:27:07 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-07-07 08:27:07 -0700 |
| commit | 7eb86a4aafdf81247bdf17a6806d44b916d8003f (patch) | |
| tree | 0649e7d0ff77578825cc4b3612f9593ab5283910 | |
| parent | 3b8ad4c30cb96ad35841d5c9317c1d953d38398c (diff) | |
| parent | a064038d85758c2e8add556f9aafa7823df53ef4 (diff) | |
| download | mruby-7eb86a4aafdf81247bdf17a6806d44b916d8003f.tar.gz mruby-7eb86a4aafdf81247bdf17a6806d44b916d8003f.zip | |
Merge pull request #351 from monaka/pr-brush-up-mrb_calloc
Brush up mrb_calloc().
| -rw-r--r-- | src/gc.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -167,10 +167,17 @@ 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 = NULL; + size_t size; + + if (nelem <= SIZE_MAX / len) { + 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; } |
