title: realloc(): invalid next size
body: <p>I'm having a problem with the realloc function. I'm using C only (so no vector) with LibCurl. The problem I'm having is that I'm getting the following error (realloc(): invalid next size) on the 12th iteration of the write_data function (the function I pass to Curl as a callback, it is called each time libcurl has some data to pass back (data is passed in chunks) ).</p>
  
  <h2>Trace:</h2>
  
  <p>-Removed-</p>
  
  <h2>Source:</h2>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;curl/curl.h&gt;
  #include &lt;string.h&gt;
  
  char * Data; //stores the data
  size_t  RunningSize;
  
  int write_data( char *ptr, size_t size, size_t nmemb, void *stream )
  {
      size_t ThisSize = (size * nmemb); //Stores the size of the data to be stored
      size_t DataLen = strlen( Data ); //length of the data so far
  
      RunningSize = (RunningSize + ThisSize ); //update running size (used as new size)
  
     Data = realloc( Data, RunningSize ); //get new mem location (on the 12th iteration, this fails)
     strcat( Data, ptr); //add data in ptr to Data
  
      return ThisSize; //the function must return the size of the data it received so cURL knows things went ok.
  }
  
  int main( )
  {
    CURL *curl;
    CURLcode res;
    const char * UserAgent = "";
  
    Data = malloc(1); //so realloc will work
    RunningSize += 1;
  
    curl = curl_easy_init();
    if(curl)
    {
      curl_easy_setopt( curl, CURLOPT_NOBODY, 0 );
      curl_easy_setopt( curl, CURLOPT_URL, "http://www.google.co.uk/" );
      curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_data);
      curl_easy_setopt( curl, CURLOPT_USERAGENT, UserAgent );
      curl_easy_setopt( curl, CURLOPT_HEADER, 1 );
  
      //preform request.
      res = curl_easy_perform(curl);
  
      //output the data (debugging purposes)
      puts( Data );
  
      //cleanup
      curl_easy_cleanup(curl);
      free(Data);
    }
  
    return 0;
  }
  </code></pre>
  
  <p>Thanks in advance,</p>