Skip to content
Snippets Groups Projects
Commit 7b057f53 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

curl_dofree: allow free(NULL)

Previously this memdebug free() replacement didn't properly work with a
NULL argument which has made us write code that avoids calling
free(NULL) - which causes some extra nuisance and unnecessary code.
Starting now, we should allow free(NULL) even when built with the
memdebug system enabled.

free(NULL) is permitted by POSIX
parent 2dd9bfc5
No related branches found
No related tags found
No related merge requests found
......@@ -314,7 +314,7 @@ void curl_dofree(void *ptr, int line, const char *source)
{
struct memdebug *mem;
assert(ptr != NULL);
if(ptr) {
#ifdef __INTEL_COMPILER
# pragma warning(push)
......@@ -322,17 +322,18 @@ void curl_dofree(void *ptr, int line, const char *source)
/* 1684: conversion from pointer to same-sized integral type */
#endif
mem = (void *)((char *)ptr - offsetof(struct memdebug, mem));
mem = (void *)((char *)ptr - offsetof(struct memdebug, mem));
#ifdef __INTEL_COMPILER
# pragma warning(pop)
#endif
/* destroy */
mt_free_fill(mem->mem, mem->size);
/* destroy */
mt_free_fill(mem->mem, mem->size);
/* free for real */
(Curl_cfree)(mem);
/* free for real */
(Curl_cfree)(mem);
}
if(source)
curl_memlog("MEM %s:%d free(%p)\n", source, line, (void *)ptr);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment