diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index e0010a702..9eb29ddb3 100644 --- a/src/tool_cfgable.c +++ b/src/tool_cfgable.c @@ -154,19 +154,13 @@ void config_free(struct OperationConfig *config) { struct OperationConfig *last = config; - /* Find the last config structure */ - while(last->next) - last = last->next; - /* Free each of the structures in reverse order */ - do { + while(last) { struct OperationConfig *prev = last->prev; - if(prev) - last->easy = NULL; free_config_fields(last); free(last); last = prev; - } while(last); + } } diff --git a/src/tool_main.c b/src/tool_main.c index 009790493..7bdd253aa 100644 --- a/src/tool_main.c +++ b/src/tool_main.c @@ -172,13 +172,17 @@ static CURLcode main_init(struct GlobalConfig *config) */ static void main_free(struct GlobalConfig *config) { + /* Cleanup the easy handle */ + curl_easy_cleanup(config->easy); + config->easy = NULL; + /* Main cleanup */ curl_global_cleanup(); convert_cleanup(); metalink_cleanup(); /* Free the config structures */ - config_free(config->first); + config_free(config->last); config->first = NULL; config->last = NULL; } diff --git a/src/tool_operate.c b/src/tool_operate.c index 4bbf29538..25aa9413d 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -1772,18 +1772,10 @@ static CURLcode operate_do(struct OperationConfig *config) dumpeasysrc(config); #endif - return (CURLcode)res; -} - -static void operate_free(struct OperationConfig *config) -{ - if(config->easy) { - curl_easy_cleanup(config->easy); - config->easy = NULL; - } - /* Release metalink related resources here */ clean_metalink(config); + + return (CURLcode)res; } CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]) @@ -1851,8 +1843,5 @@ CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]) } } - /* Perform the cleanup */ - operate_free(config->first); - return result; }