diff --git a/src/tool_main.c b/src/tool_main.c index fe0768747..5e58aff1d 100644 --- a/src/tool_main.c +++ b/src/tool_main.c @@ -82,6 +82,38 @@ static void main_checkfds(void) #endif } +#ifdef CURLDEBUG +void memory_tracking_init(void) +{ + char *env; + /* if CURL_MEMDEBUG is set, this starts memory tracking message logging */ + env = curlx_getenv("CURL_MEMDEBUG"); + if(env) { + /* use the value as file name */ + char fname[CURL_MT_LOGFNAME_BUFSIZE]; + if(strlen(env) >= CURL_MT_LOGFNAME_BUFSIZE) + env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0'; + strcpy(fname, env); + curl_free(env); + curl_memdebug(fname); + /* this weird stuff here is to make curl_free() get called + before curl_memdebug() as otherwise memory tracking will + log a free() without an alloc! */ + } + /* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */ + env = curlx_getenv("CURL_MEMLIMIT"); + if(env) { + char *endptr; + long num = strtol(env, &endptr, 10); + if((endptr != env) && (endptr == env + strlen(env)) && (num > 0)) + curl_memlimit(num); + curl_free(env); + } +} +#else +# define memory_tracking_init() Curl_nop_stmt +#endif + /* ** curl tool main function. */ @@ -99,6 +131,10 @@ int main(int argc, char *argv[]) (void)signal(SIGPIPE, SIG_IGN); #endif + /* Initialize memory tracking */ + memory_tracking_init(); + + /* Start our curl operation */ res = operate(&config, argc, argv); #ifdef __SYMBIAN32__ diff --git a/src/tool_operate.c b/src/tool_operate.c index dd6d37f29..c3ccfe7f1 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -214,12 +214,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) heads.stream = stdout; heads.config = config; - memory_tracking_init(); - /* ** Initialize curl library - do not call any libcurl functions before - ** this point. Note that the memory_tracking_init() magic above is an - ** exception, but then that's not part of the official public API. + ** this point. */ if(main_init() != CURLE_OK) { helpf(config->errors, "error initializing curl library\n"); diff --git a/src/tool_operhlp.c b/src/tool_operhlp.c index c33ca507d..b8c0a2971 100644 --- a/src/tool_operhlp.c +++ b/src/tool_operhlp.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2013, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2014, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -219,33 +219,3 @@ void main_free(void) metalink_cleanup(); } -#ifdef CURLDEBUG -void memory_tracking_init(void) -{ - char *env; - /* if CURL_MEMDEBUG is set, this starts memory tracking message logging */ - env = curlx_getenv("CURL_MEMDEBUG"); - if(env) { - /* use the value as file name */ - char fname[CURL_MT_LOGFNAME_BUFSIZE]; - if(strlen(env) >= CURL_MT_LOGFNAME_BUFSIZE) - env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0'; - strcpy(fname, env); - curl_free(env); - curl_memdebug(fname); - /* this weird stuff here is to make curl_free() get called - before curl_memdebug() as otherwise memory tracking will - log a free() without an alloc! */ - } - /* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */ - env = curlx_getenv("CURL_MEMLIMIT"); - if(env) { - char *endptr; - long num = strtol(env, &endptr, 10); - if((endptr != env) && (endptr == env + strlen(env)) && (num > 0)) - curl_memlimit(num); - curl_free(env); - } -} -#endif - diff --git a/src/tool_operhlp.h b/src/tool_operhlp.h index 806717ee0..c2365c88f 100644 --- a/src/tool_operhlp.h +++ b/src/tool_operhlp.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2012, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2014, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -41,11 +41,5 @@ CURLcode main_init(void); void main_free(void); -#ifdef CURLDEBUG -void memory_tracking_init(void); -#else -# define memory_tracking_init() Curl_nop_stmt -#endif - #endif /* HEADER_CURL_TOOL_OPERHLP_H */