cURL / Mailing Lists / curl-library / Single Mail


FILE errno -1 & Bad file descriptor error

From: Phil Freeman <>
Date: Wed, 1 Apr 2015 13:06:45 +1100

Hi folks,

I've recently incorporated libcurl into a piece of software in development (vs 2010 exp., c++) which is a plugin for use in a well-known animation package. But I'm coming across an error and are unsure how to navigate it. The error is that when I use the line curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp) the file won't close with fclose(). If I comment out the offending line, the file closes without issue. The code below is pretty much what is being used, minus a few lines used for printing etc:

char outfilename[FILENAME_MAX] = " ";

// The path is set here using a custom string
// element. The path is good - the file turns
// up in the right location.
for(int i = 1; i <= save_path.GetLength();)
 outfilename[i-1] = save_path.operator[](i-1);

curl = curl_easy_init();

if(curl != NULL)
 fp = fopen(outfilename,"wb");

 if(fp == NULL)
  MessageDialog(String("Unable to continue: " + String(strerror(errno)) + ". Returning."));
  return FALSE;

 curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp); // <-- take mental note of this line

 // why is the file 'closing' with errno -1 (Bad file descriptor) when
 // the curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp) command is called?

 int fclo = fclose(fp); // fclose() fails
 if(fclo != NULL)
  GePrint("Close file error: " + String(strerror(errno))); // custom print, prints 'Bad file descriptor'
 GePrint("fclose(): " + LongToString(fclo)); // custom print function, prints -1

The file is made in the correct location (I've tried a few both on c: drive and other drives) but the file is always 0kb in size. I'm suspecting it might be a admin privileges issue, but will leave the judgement to someone in the know. No other libraries associated with libcurl are installed other than libcurl itself. Running version 7.41.0. Any assistance appreciated.

(Website not yet available.)
List admin:
Received on 2015-04-01