curl-library
Re: CURLOPT_WRITEDATA segmentation fault
From: Lucas Ces <lucas.ces_at_gmail.com>
Date: Thu, 30 Oct 2008 17:41:02 -0200
Date: Thu, 30 Oct 2008 17:41:02 -0200
Sorry for bother you guys. After 2 days breaking my head over this
code, just after I posted I found that a (void*) conversion of the
file when passing it to curl_easy_setopt solves the problem;
so the changed line became:
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)image);
-- 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.br Best Regards On Thu, Oct 30, 2008 at 5:20 PM, Lucas Ces <lucas.ces_at_gmail.com> wrote: > 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.br >Received on 2008-10-30