modified to not leak memory if a libcurl function returns failure, for better

memory leak detection
This commit is contained in:
Daniel Stenberg 2004-05-17 07:45:20 +00:00
parent 23a43c6e0f
commit 0383f7f19d
2 changed files with 33 additions and 20 deletions

View 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;
}

View 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;
if(code == CURLE_OK) {
curl = curl_easy_init();
if(!curl)
return 2;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
curl2 = curl_easy_duphandle(curl);
if(!curl2)
return 3;
curl2 = curl_easy_duphandle(curl);
if(curl2) {
code = curl_easy_setopt(curl2, CURLOPT_URL, URL);
if(code != CURLE_OK)
return 4;
code = curl_easy_setopt(curl2, CURLOPT_URL, URL);
if(code == CURLE_OK) {
code = curl_easy_perform(curl2);
if(code != CURLE_OK)
return 5;
code = curl_easy_perform(curl2);
if(code == CURLE_OK)
rc = 0;
else
rc = 1;
}
else
rc = 2;
curl_easy_cleanup(curl2);
curl_easy_cleanup(curl2);
}
else
rc = 3;
curl_easy_cleanup(curl);
curl_easy_cleanup(curl);
}
else
rc = 4;
}
else
rc = 5;
return 0;
return rc;
}