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 */ /* always cleanup */
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
}
if(slist)
/* clean up the headers list */ /* clean up the headers list */
curl_slist_free_all(slist); curl_slist_free_all(slist);
}
return res; return res;
} }

View File

@ -8,34 +8,45 @@ int test(char *URL)
CURLcode code; CURLcode code;
CURL *curl; CURL *curl;
CURL *curl2; CURL *curl2;
int rc = 99;
code = curl_global_init(CURL_GLOBAL_ALL); code = curl_global_init(CURL_GLOBAL_ALL);
if(code != CURLE_OK) if(code == CURLE_OK) {
return 1;
curl = curl_easy_init(); curl = curl_easy_init();
if(!curl) if(curl) {
return 2;
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HEADER, 1); curl_easy_setopt(curl, CURLOPT_HEADER, 1);
curl2 = curl_easy_duphandle(curl); curl2 = curl_easy_duphandle(curl);
if(!curl2) if(curl2) {
return 3;
code = curl_easy_setopt(curl2, CURLOPT_URL, URL); code = curl_easy_setopt(curl2, CURLOPT_URL, URL);
if(code != CURLE_OK) if(code == CURLE_OK) {
return 4;
code = curl_easy_perform(curl2); code = curl_easy_perform(curl2);
if(code != CURLE_OK) if(code == CURLE_OK)
return 5; 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;
} }