Skip to content
Snippets Groups Projects
Commit 5a83976c authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Markus F.X.J. Oberhumer's patch that reduces memory usage quite a bit by

only allocating the scratch memory buffer once it is needed and not always
in the handle.
parent b5276a9a
No related branches found
No related tags found
No related merge requests found
......@@ -964,6 +964,12 @@ CURLcode Curl_readwrite(struct connectdata *conn,
/* convert LF to CRLF if so asked */
if (data->set.crlf) {
if(data->state.scratch == NULL)
data->state.scratch = malloc(2*BUFSIZE);
if(data->state.scratch == NULL) {
failf (data, "Failed to alloc scratch buffer!");
return CURLE_OUT_OF_MEMORY;
}
for(i = 0, si = 0; i < nread; i++, si++) {
if (conn->upload_fromhere[i] == 0x0a) {
data->state.scratch[si++] = 0x0d;
......
......@@ -190,6 +190,9 @@ CURLcode Curl_close(struct SessionHandle *data)
if(data->state.auth_host)
free(data->state.auth_host);
if(data->state.scratch)
free(data->state.scratch);
if(data->change.proxy_alloc)
free(data->change.proxy);
......
......@@ -598,7 +598,7 @@ struct UrlState {
struct curl_ssl_session *session; /* array of 'numsessions' size */
long sessionage; /* number of the most recent session */
char scratch[BUFSIZE*2]; /* huge buffer when doing upload CRLF replacing */
char *scratch; /* huge buffer[BUFSIZE*2] when doing upload CRLF replacing */
bool errorbuf; /* Set to TRUE if the error buffer is already filled in.
This must be set to FALSE every time _easy_perform() is
called. */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment