Note that there are some explanatory texts on larger screens.

plurals
  1. POrealloc(): invalid next size
    primarykey
    data
    text
    <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>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload