{
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);
+ }
}
*/
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;
}
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[])
}
}
- /* Perform the cleanup */
- operate_free(config->first);
-
return result;
}