Mailing Lists
| |
|
|
|
cURL Mailing List Monthly Index Single Mail
curl-tracker Archives
[curl:bugs] #1241 curl_formadd leak
From: Daniel Stenberg <bagder_at_users.sf.net>
Date: Mon, 10 Jun 2013 22:16:07 +0000
- **status**: pending --> closed-invalid
---
** [bugs:#1241] curl_formadd leak**
**Status:** closed-invalid
**Labels:** memory leak
**Created:** Thu Jun 06, 2013 09:54 AM UTC by yayaigo
**Last Updated:** Fri Jun 07, 2013 09:30 PM UTC
**Owner:** Daniel Stenberg
I use libcurl multipart upload file, and I get leak info in the XCode instruments.
curl_formadd seem to have leak.
The leak info is below:
Bytes Used # Leaks Symbol Name
656 Bytes 100.0% 17 thread_start
656 Bytes 100.0% 17 _pthread_start
656 Bytes 100.0% 17 _ZN7cocos2d9extensionL13networkThreadEPv
656 Bytes 100.0% 17 cocos2d::extension::processPostMultipartTask(cocos2d::extension::CCHttpRequest*, unsigned long (*)(void*, unsigned long, unsigned long, void*), void*, int*)
656 Bytes 100.0% 17 curl_formadd
384 Bytes 58.5% 6 calloc
144 Bytes 21.9% 3 strdup
144 Bytes 21.9% 3 malloc
128 Bytes 19.5% 8 memdup
My code is below:
CURLcode code = CURL_LAST;
CURL *curl = curl_easy_init();
do {
if (!configureCURL(curl)) {
break;
}
/* handle custom header data */
/* create curl linked list */
struct curl_slist *cHeaders=NULL;
/* get custom header data (if set) */
std::vector<std::string> headers=request->getHeaders();
if(!headers.empty())
{
for(std::vector<std::string>::iterator it=headers.begin();it!=headers.end();it++)
{
/* append custom headers one by one */
cHeaders=curl_slist_append(cHeaders,it->c_str());
}
/* set custom headers for curl */
code = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, cHeaders);
if (code != CURLE_OK) {
break;
}
}
/*
<form enctype="multipart/form-data" method="POST" action="http://xxx.xxx.xxx.xxx/xxxxx/public/member/upload" accept-charset="UTF-8">
<input type="file" name="uploadfile">
<input type="text" name="u_id" value="" id="u_id">
<input type="text" name="cali" value="" id="cali">
<input type="submit" value="Upload">
</form>
*/
struct curl_httppost *formpost = 0;
struct curl_httppost *lastptr = 0;
map<string,string>::iterator it = formData.begin();
for(;it != formData.end(); it++)
{
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, (*it).first.c_str(),
CURLFORM_COPYCONTENTS, (*it).second.c_str(),
CURLFORM_END);
}
curl_formadd(&formpost, &lastptr, CURLFORM_PTRNAME, "uploadfile", CURLFORM_FILE, postMultipartFilePath, CURLFORM_END);
code = curl_easy_setopt(curl, CURLOPT_URL, request->getUrl());
if (code != CURLE_OK) {
break;
}
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
if (code != CURLE_OK) {
break;
}
code = curl_easy_perform(curl);
if (code != CURLE_OK) {
break;
}
curl_formfree(formpost);
//curl_formfree(lastptr);//need use that remove leak? it will crash
/* free the linked list for header data */
curl_slist_free_all(cHeaders);
code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, responseCode);
if (code != CURLE_OK || *responseCode != 200) {
code = CURLE_HTTP_RETURNED_ERROR;
}
} while (0);
if (curl) {
curl_easy_cleanup(curl);
}
So what do I miss something to do?
Thanks.
Regards.
---
Sent from sourceforge.net because you indicated interest in <https://sourceforge.net/p/curl/bugs/1241/>
To unsubscribe from further messages, please visit <https://sourceforge.net/auth/subscriptions/>
Received on 2013-06-11
These mail archives are generated by hypermail. |
Page updated May 06, 2013.
web site info