curl-library
CURLOPT_WRITEDATA segmentation fault
Date: Thu, 30 Oct 2008 17:20:03 -0200
Hi everybody, I'm writting a tiny set o classes that uses
libflickrcurl to retrieve data from Flickr REST and libcurl to
download the images with the URL obtained from libflickrcurl. My
problem is that piece of code:
string FlickrPhoto::getThumbnailPath()
{
FILE *image;
char *tmp_filename;
//void *buff;
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, this -> thumbnailUrl.c_str());
tmp_filename = new char[L_tmpnam+1];
strcpy(tmp_filename,"/tmp/thumbXXXXXX");
mkstemp(tmp_filename);
this -> thumbnailPath = (string)tmp_filename;
image = fopen(this -> thumbnailPath.c_str(),"wb");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, image);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
fclose(image);
return (this -> thumbnailPath);
}
Everything goes fine until it calls curl_easy_perform and I get a
segmentation fault error in some internal call to fwrite.
I've do some modifications in the code above to pass
CURLOPT_WRITEFUNCTION instead CURLOPT_WRITEDATA for the same purpose
but when I checked the buffer value received by the function it was
empty.
This code works fine when I pass no options to curl object and prints
the image data to stdio.
I'm running a Kubuntu/Ubuntu environment with libcurl 7.18.0 and g++ 4.2.3.
Thanks in advance.
-- Lucas Ces Laboratório de Tecnologia da Informação Aplicada - LTIA Universidade Estadual Paulista, Bauru - UNESP +55 14 3011-1596 / +55 11 8319-1327 lucas.santos_at_ltia.fc.unesp.br www.ltia.fc.unesp.brReceived on 2008-10-30