diff options
author | Yang Tse <yangsita@gmail.com> | 2009-11-18 11:21:58 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2009-11-18 11:21:58 +0000 |
commit | 2f6dcaa644b79a182300edeb160cccd512dcf6c0 (patch) | |
tree | 3c9f480a01a43748d9ccea4864a704b9171b7352 | |
parent | 59939313f8452a9d817c178425c2ba3b91798ea9 (diff) |
Make memory tracking system intolerant with zero sized malloc(),
calloc() and realloc() function calls.
-rw-r--r-- | lib/memdebug.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/memdebug.c b/lib/memdebug.c index 99bce6a5d..fbe4847f0 100644 --- a/lib/memdebug.c +++ b/lib/memdebug.c @@ -45,6 +45,10 @@ #include "curl_memory.h" #include "memdebug.h" +#ifndef HAVE_ASSERT_H +# define assert(x) do { } while (0) +#endif + struct memdebug { size_t size; union { @@ -127,6 +131,8 @@ void *curl_domalloc(size_t wantedsize, int line, const char *source) struct memdebug *mem; size_t size; + assert(wantedsize != 0); + if(countcheck("malloc", line, source)) return NULL; @@ -152,6 +158,9 @@ void *curl_docalloc(size_t wanted_elements, size_t wanted_size, struct memdebug *mem; size_t size, user_size; + assert(wanted_elements != 0); + assert(wanted_size != 0); + if(countcheck("calloc", line, source)) return NULL; @@ -177,7 +186,7 @@ char *curl_dostrdup(const char *str, int line, const char *source) char *mem; size_t len; - DEBUGASSERT(str != NULL); + assert(str != NULL); if(countcheck("strdup", line, source)) return NULL; @@ -202,6 +211,8 @@ void *curl_dorealloc(void *ptr, size_t wantedsize, { struct memdebug *mem=NULL; + assert(wantedsize != 0); + size_t size = sizeof(struct memdebug)+wantedsize; if(countcheck("realloc", line, source)) @@ -227,7 +238,7 @@ void curl_dofree(void *ptr, int line, const char *source) { struct memdebug *mem; - DEBUGASSERT(ptr != NULL); + assert(ptr != NULL); mem = (struct memdebug *)((char *)ptr - offsetof(struct memdebug, mem)); @@ -305,7 +316,7 @@ int curl_fclose(FILE *file, int line, const char *source) { int res; - DEBUGASSERT(file != NULL); + assert(file != NULL); res=fclose(file); if(logfile) |