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.
This commit is contained in:
Родитель
b5276a9a69
Коммит
5a83976c99
|
@ -964,6 +964,12 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
||||||
|
|
||||||
/* convert LF to CRLF if so asked */
|
/* convert LF to CRLF if so asked */
|
||||||
if (data->set.crlf) {
|
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++) {
|
for(i = 0, si = 0; i < nread; i++, si++) {
|
||||||
if (conn->upload_fromhere[i] == 0x0a) {
|
if (conn->upload_fromhere[i] == 0x0a) {
|
||||||
data->state.scratch[si++] = 0x0d;
|
data->state.scratch[si++] = 0x0d;
|
||||||
|
|
|
@ -190,6 +190,9 @@ CURLcode Curl_close(struct SessionHandle *data)
|
||||||
if(data->state.auth_host)
|
if(data->state.auth_host)
|
||||||
free(data->state.auth_host);
|
free(data->state.auth_host);
|
||||||
|
|
||||||
|
if(data->state.scratch)
|
||||||
|
free(data->state.scratch);
|
||||||
|
|
||||||
if(data->change.proxy_alloc)
|
if(data->change.proxy_alloc)
|
||||||
free(data->change.proxy);
|
free(data->change.proxy);
|
||||||
|
|
||||||
|
|
|
@ -598,7 +598,7 @@ struct UrlState {
|
||||||
struct curl_ssl_session *session; /* array of 'numsessions' size */
|
struct curl_ssl_session *session; /* array of 'numsessions' size */
|
||||||
long sessionage; /* number of the most recent session */
|
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.
|
bool errorbuf; /* Set to TRUE if the error buffer is already filled in.
|
||||||
This must be set to FALSE every time _easy_perform() is
|
This must be set to FALSE every time _easy_perform() is
|
||||||
called. */
|
called. */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче