size_t writeFunctionHandler(char *contents,size_t size,size_t nmemb,void *userdata) {
  // size of the storedSize
  static size_t storedSize = 0;
  // the size of data available
  size_t realSize = size * nmemb;
  char *dataBuffer = (char *) userdata;
  // realloc the buffer buffer
  dataBuffer = realloc(dataBuffer,storedSize + realSize);
  if (dataBuffer == NULL) {
    printf("Could not allocate memory \n");
    return 0;
  }
  // store the contents of realSize from last storedSize
  memcpy(&(dataBuffer[storedSize]),contents,realSize);
  storedSize += realSize;
  return realSize;
}
I fail to understand as to why the above code return and error pointer being realloc'd was not allocated
And when I used this sample code
struct MemoryStruct {
  char *memory;
};
size_t writeFunctionHandler(char *contents,size_t size,size_t nmemb, void *userdata) {
  size_t realSize = size * nmemb;
  static size_t storedSize = 0;
  //char *dataBuffer = (char *)userdata;
  struct MemoryStruct *chunk = (struct MemoryStruct *)userdata;
  printf("print 1\n");
  chunk -> memory = realloc(chunk -> memory,storedSize + realSize);
  printf("print 2\n");
  if (chunk -> memory == NULL) {
    printf("Could not allocate memory\n");
    return 0;
  }
  memcpy(&(chunk -> memory[storedSize]),contents,realSize);
  storedSize += realSize;
  printf("print 3\n");
  return realSize;
}
All seem to work properly fine.
This above is a curl writeFunctionHandler
int main() {
   char *buffer = calloc(1,1);
   // struct MemoryStruct chunk;
   // chunk.memory = calloc(1,1);
   CURL *curl = curl_easy_init();
   curl_easy_setopt(curl, CURLOPT_URL, "http://stackoverflow.com");
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeFunctionHandler);
   curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)buffer);
   // curl_easy_setopt(curl,CURLOPT_WRITEDATA, (void *) &chunk);
   free(buffer);
   //free(chunk.memory);
   curl_easy_cleanup(curl);
   return 0;
}
I fail to understand what difference between the 2 code except the fact that I'm using struct in the later case.
 
    