diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/url.c | 15 | ||||
| -rw-r--r-- | lib/urldata.h | 1 | 
2 files changed, 10 insertions, 6 deletions
| @@ -2284,15 +2284,17 @@ CURLcode Curl_setopt(struct Curl_easy *data, CURLoption option,       * The application kindly asks for a differently sized receive buffer.       * If it seems reasonable, we'll use it.       */ -    data->set.buffer_size = va_arg(param, long); +    arg = va_arg(param, long); -    if(data->set.buffer_size > MAX_BUFSIZE) -      data->set.buffer_size = MAX_BUFSIZE; /* huge internal default */ -    else if(data->set.buffer_size < 1) -      data->set.buffer_size = BUFSIZE; +    if(arg > MAX_BUFSIZE) +      arg = MAX_BUFSIZE; /* huge internal default */ +    else if(arg < 1) +      arg = BUFSIZE; +    else if(arg < MIN_BUFSIZE) +      arg = BUFSIZE;      /* Resize only if larger than default buffer size. */ -    if(data->set.buffer_size > BUFSIZE) { +    if(arg > BUFSIZE) {        char *newbuff = realloc(data->state.buffer, data->set.buffer_size + 1);        if(!newbuff) {          DEBUGF(fprintf(stderr, "Error: realloc of buffer failed\n")); @@ -2301,6 +2303,7 @@ CURLcode Curl_setopt(struct Curl_easy *data, CURLoption option,        else          data->state.buffer = newbuff;      } +    data->set.buffer_size = arg;      break; diff --git a/lib/urldata.h b/lib/urldata.h index f7a55e15e..b300d8a69 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -205,6 +205,7 @@  #define BUFSIZE CURL_MAX_WRITE_SIZE  #undef MAX_BUFSIZE  #define MAX_BUFSIZE CURL_MAX_READ_SIZE +#define MIN_BUFSIZE 1024  #define CURL_BUFSIZE(x) ((x)?(x):(BUFSIZE))  /* Initial size of the buffer to store headers in, it'll be enlarged in case | 
