tool_operate: Moved easy handle cleanup into tool_main
authorSteve Holme <steve_holme@hotmail.com>
Sun, 23 Feb 2014 15:10:18 +0000 (15:10 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Mon, 24 Feb 2014 20:35:48 +0000 (20:35 +0000)
src/tool_cfgable.c
src/tool_main.c
src/tool_operate.c

index e0010a7..9eb29dd 100644 (file)
@@ -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);
+  }
 }
index 0097904..7bdd253 100644 (file)
@@ -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;
 }
index 4bbf295..25aa941 100644 (file)
@@ -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;
 }