From: Daniel Stenberg Date: Mon, 16 Feb 2004 16:23:19 +0000 (+0000) Subject: Make realloc() support NULL as pointer. Made to allow us to use these routines X-Git-Tag: cares-1_1_0~260 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f2fbb5f3d52bf1dfc8e179945016024e47736e4c;p=curl Make realloc() support NULL as pointer. Made to allow us to use these routines to memdebug the ares stuff as well. --- diff --git a/lib/memdebug.c b/lib/memdebug.c index aea6f324b..d08de6a2d 100644 --- a/lib/memdebug.c +++ b/lib/memdebug.c @@ -152,21 +152,24 @@ char *curl_dostrdup(const char *str, int line, const char *source) return mem; } +/* We provide a realloc() that accepts a NULL as pointer, which then + performs a malloc(). In order to work with ares. */ void *curl_dorealloc(void *ptr, size_t wantedsize, int line, const char *source) { - struct memdebug *mem; + struct memdebug *mem=NULL; size_t size = sizeof(struct memdebug)+wantedsize; if(countcheck("realloc", line, source)) return NULL; - mem = (struct memdebug *)((char *)ptr - offsetof(struct memdebug, mem)); + if(ptr) + mem = (struct memdebug *)((char *)ptr - offsetof(struct memdebug, mem)); mem=(struct memdebug *)(realloc)(mem, size); if(logfile) - fprintf(logfile, "MEM %s:%d realloc(%p, %d) = %p\n", + fprintf(logfile, "MEM %s:%d realloc(0x%x, %d) = %p\n", source, line, ptr, wantedsize, mem?mem->mem:NULL); if(mem) {