]> granicus.if.org Git - curl/commitdiff
tool_main: Changed stack based config struct to be heap based
authorSteve Holme <steve_holme@hotmail.com>
Sun, 2 Feb 2014 13:58:35 +0000 (13:58 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Mon, 3 Feb 2014 10:54:40 +0000 (10:54 +0000)
src/tool_main.c

index 5e58aff1d0c5cee2434bdace36037e1780b65b02..e0766e9b7d0aa1def31b352ddd91b6b84b0e1485 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "tool_cfgable.h"
 #include "tool_convert.h"
+#include "tool_msgs.h"
 #include "tool_operate.h"
 #include "tool_panykey.h"
 #include "tool_vms.h"
@@ -120,10 +121,7 @@ void memory_tracking_init(void)
 int main(int argc, char *argv[])
 {
   int res;
-  struct Configurable config;
-
-  /* Initialise the config */
-  init_config(&config);
+  struct Configurable *config;
 
   main_checkfds();
 
@@ -134,15 +132,29 @@ int main(int argc, char *argv[])
   /* Initialize memory tracking */
   memory_tracking_init();
 
-  /* Start our curl operation */
-  res = operate(&config, argc, argv);
+  /* Allocate the initial config */
+  config = malloc(sizeof(struct Configurable));
+
+  if(config) {
+    /* Initialise the config */
+    init_config(config);
+
+    /* Start our curl operation */
+    res = operate(config, argc, argv);
 
 #ifdef __SYMBIAN32__
-  if(config.showerror)
-    tool_pressanykey();
+    if(config->showerror)
+      tool_pressanykey();
 #endif
 
-  free_config_fields(&config);
+    /* Free the config structure */
+    free_config_fields(config);
+    Curl_safefree(config);
+  }
+  else {
+    helpf(stderr, "error initializing curl\n");
+    res = CURLE_FAILED_INIT;
+  }
 
 #ifdef __NOVELL_LIBC__
   if(getenv("_IN_NETWARE_BASH_") == NULL)