]> granicus.if.org Git - curl/commitdiff
modified to not leak memory if a libcurl function returns failure, for better
authorDaniel Stenberg <daniel@haxx.se>
Mon, 17 May 2004 07:45:20 +0000 (07:45 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 17 May 2004 07:45:20 +0000 (07:45 +0000)
memory leak detection

tests/libtest/lib510.c
tests/libtest/lib512.c

index 051a773c53253166fc829e07f4cfc4af56c71b6c..4dfdbd96260993c73e608c066a89cd9278565fd0 100644 (file)
@@ -72,9 +72,11 @@ int test(char *URL)
     /* always cleanup */
     curl_easy_cleanup(curl);
 
+  }
+
+  if(slist)
     /* clean up the headers list */
     curl_slist_free_all(slist);
 
-  }
   return res;
 }
index 9c8c8e63ed215591fe09c2859e66fa22aac31a03..d52baa6d0de27eefdf081d43a113b80b87ec86ad 100644 (file)
@@ -8,34 +8,45 @@ int test(char *URL)
   CURLcode code;
   CURL *curl;
   CURL *curl2;
+  int rc = 99;
 
   code = curl_global_init(CURL_GLOBAL_ALL);
-  if(code != CURLE_OK)
-    return 1;
-
-  curl = curl_easy_init();
-  if(!curl)
-    return 2;
-
-  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
-  curl_easy_setopt(curl, CURLOPT_HEADER, 1);
-
-  curl2 = curl_easy_duphandle(curl);
-  if(!curl2)
-    return 3;
-
-  code = curl_easy_setopt(curl2, CURLOPT_URL, URL);
-  if(code != CURLE_OK)
-    return 4;
-
-  code = curl_easy_perform(curl2);
-  if(code != CURLE_OK)
-    return 5;
-
-  curl_easy_cleanup(curl2);
-
-  curl_easy_cleanup(curl);
-
-  return 0;
+  if(code == CURLE_OK) {
+
+    curl = curl_easy_init();
+    if(curl) {
+
+      curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+      curl_easy_setopt(curl, CURLOPT_HEADER, 1);
+
+      curl2 = curl_easy_duphandle(curl);
+      if(curl2) {
+
+        code = curl_easy_setopt(curl2, CURLOPT_URL, URL);
+        if(code == CURLE_OK) {
+
+          code = curl_easy_perform(curl2);
+          if(code == CURLE_OK)
+            rc = 0;
+          else
+            rc = 1;
+        }
+        else
+          rc = 2;
+
+        curl_easy_cleanup(curl2);
+      }
+      else
+        rc = 3;
+
+      curl_easy_cleanup(curl);
+    }
+    else
+      rc = 4;
+  }
+  else
+    rc = 5;
+
+  return rc;
 }