aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2009-11-18 11:21:58 +0000
committerYang Tse <yangsita@gmail.com>2009-11-18 11:21:58 +0000
commit2f6dcaa644b79a182300edeb160cccd512dcf6c0 (patch)
tree3c9f480a01a43748d9ccea4864a704b9171b7352
parent59939313f8452a9d817c178425c2ba3b91798ea9 (diff)
Make memory tracking system intolerant with zero sized malloc(),
calloc() and realloc() function calls.
-rw-r--r--lib/memdebug.c17
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)