From: Yang Tse Date: Sun, 5 Nov 2006 12:42:50 +0000 (+0000) Subject: Prevent multiple initialization of memdebug configuration variables. X-Git-Tag: curl-7_16_1~188 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1bcbe89802776fa735d1f50deb921add4a33b766;p=thirdparty%2Fcurl.git Prevent multiple initialization of memdebug configuration variables. This was possible on debug c-ares enabled builds when both CURL_MEMDEBUG and CARES_MEMDEBUG environment variables were set. Leading to a file handle leak even when both variables had the same value, and wierd test suite results when different. --- diff --git a/lib/memdebug.c b/lib/memdebug.c index 2b6c55c3b0..a8cca44cbc 100644 --- a/lib/memdebug.c +++ b/lib/memdebug.c @@ -61,25 +61,29 @@ struct memdebug { */ #define logfile curl_debuglogfile -FILE *curl_debuglogfile; -static bool memlimit; /* enable memory limit */ -static long memsize; /* set number of mallocs allowed */ +FILE *curl_debuglogfile = NULL; +static bool memlimit = FALSE; /* enable memory limit */ +static long memsize = 0; /* set number of mallocs allowed */ /* this sets the log file name */ void curl_memdebug(const char *logname) { - if(logname) - logfile = fopen(logname, "w"); - else - logfile = stderr; + if (!logfile) { + if(logname) + logfile = fopen(logname, "w"); + else + logfile = stderr; + } } /* This function sets the number of malloc() calls that should return successfully! */ void curl_memlimit(long limit) { - memlimit = TRUE; - memsize = limit; + if (!memlimit) { + memlimit = TRUE; + memsize = limit; + } } /* returns TRUE if this isn't allowed! */