diff --git a/mem.c b/mem.c index 065a6f2..faded80 100644 --- a/mem.c +++ b/mem.c @@ -241,22 +241,28 @@ void *xc_mem_calloc(xc_mem_t *mem, xc_memsize_t memb, xc_memsize_t size) /* {{{ xc_memsize_t realsize = memb * size; void *p = xc_mem_malloc(mem, realsize); - memset(p, 0, realsize); + if (p) { + memset(p, 0, realsize); + } return p; } /* }}} */ void *xc_mem_realloc(xc_mem_t *mem, const void *p, xc_memsize_t size) /* {{{ */ { void *newp = xc_mem_malloc(mem, size); - memcpy(newp, p, size); - xc_mem_free(mem, p); + if (p) { + memcpy(newp, p, size); + xc_mem_free(mem, p); + } return newp; } /* }}} */ char *xc_mem_strndup(xc_mem_t *mem, const char *str, xc_memsize_t len) /* {{{ */ { void *p = xc_mem_malloc(mem, len + 1); - memcpy(p, str, len + 1); + if (p) { + memcpy(p, str, len + 1); + } return p; } /* }}} */