mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
- Dmitriy Sergeyev pointed out that curl_easy_pause() didn't unpause properly
during certain conditions. I also changed this code to use realloc() based on Daniel Fandrich's suggestion.
This commit is contained in:
parent
747e0c657d
commit
873e734c39
5
CHANGES
5
CHANGES
@ -6,6 +6,11 @@
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
Daniel Stenberg (5 Sep 2008)
|
||||||
|
- Dmitriy Sergeyev pointed out that curl_easy_pause() didn't unpause properly
|
||||||
|
during certain conditions. I also changed this code to use realloc() based
|
||||||
|
on Daniel Fandrich's suggestion.
|
||||||
|
|
||||||
Guenter Knauf (4 Sep 2008)
|
Guenter Knauf (4 Sep 2008)
|
||||||
- MingW32 non-configure builds are now largefile feature enabled by default.
|
- MingW32 non-configure builds are now largefile feature enabled by default.
|
||||||
NetWare LIBC builds are also now largefile feature enabled by default.
|
NetWare LIBC builds are also now largefile feature enabled by default.
|
||||||
|
@ -15,6 +15,7 @@ This release includes the following bugfixes:
|
|||||||
|
|
||||||
o MingW32 non-configure builds are now largefile feature enabled by default
|
o MingW32 non-configure builds are now largefile feature enabled by default
|
||||||
o NetWare LIBC builds are now largefile feature enabled by default
|
o NetWare LIBC builds are now largefile feature enabled by default
|
||||||
|
o curl_easy_pause() could behave wrongly on unpause
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
@ -27,6 +28,6 @@ Other curl-related news:
|
|||||||
This release would not have looked like this without help, code, reports and
|
This release would not have looked like this without help, code, reports and
|
||||||
advice from friends like these:
|
advice from friends like these:
|
||||||
|
|
||||||
Keith Mok, Yang Tse, Daniel Fandrich, Guenter Knauf
|
Keith Mok, Yang Tse, Daniel Fandrich, Guenter Knauf, Dmitriy Sergeyev
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
13
lib/easy.c
13
lib/easy.c
@ -821,6 +821,7 @@ CURLcode curl_easy_pause(CURL *curl, int action)
|
|||||||
return PAUSE again and then we'll get a new copy allocted and stored in
|
return PAUSE again and then we'll get a new copy allocted and stored in
|
||||||
the tempwrite variables */
|
the tempwrite variables */
|
||||||
char *tempwrite = data->state.tempwrite;
|
char *tempwrite = data->state.tempwrite;
|
||||||
|
char *freewrite = tempwrite; /* store this pointer to free it later */
|
||||||
size_t tempsize = data->state.tempwritesize;
|
size_t tempsize = data->state.tempwritesize;
|
||||||
int temptype = data->state.tempwritetype;
|
int temptype = data->state.tempwritetype;
|
||||||
size_t chunklen;
|
size_t chunklen;
|
||||||
@ -845,7 +846,7 @@ CURLcode curl_easy_pause(CURL *curl, int action)
|
|||||||
|
|
||||||
result = Curl_client_write(data->state.current_conn,
|
result = Curl_client_write(data->state.current_conn,
|
||||||
temptype, tempwrite, chunklen);
|
temptype, tempwrite, chunklen);
|
||||||
if(!result)
|
if(result)
|
||||||
/* failures abort the loop at once */
|
/* failures abort the loop at once */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -858,13 +859,13 @@ CURLcode curl_easy_pause(CURL *curl, int action)
|
|||||||
*/
|
*/
|
||||||
char *newptr;
|
char *newptr;
|
||||||
|
|
||||||
free(data->state.tempwrite); /* free the one just cached as it isn't
|
|
||||||
enough */
|
|
||||||
|
|
||||||
/* note that tempsize is still the size as before the callback was
|
/* note that tempsize is still the size as before the callback was
|
||||||
used, and thus the whole piece of data to keep */
|
used, and thus the whole piece of data to keep */
|
||||||
newptr = malloc(tempsize);
|
newptr = realloc(data->state.tempwrite, tempsize);
|
||||||
|
|
||||||
if(!newptr) {
|
if(!newptr) {
|
||||||
|
free(data->state.tempwrite); /* free old area */
|
||||||
|
data->state.tempwrite = NULL;
|
||||||
result = CURLE_OUT_OF_MEMORY;
|
result = CURLE_OUT_OF_MEMORY;
|
||||||
/* tempwrite will be freed further down */
|
/* tempwrite will be freed further down */
|
||||||
break;
|
break;
|
||||||
@ -882,7 +883,7 @@ CURLcode curl_easy_pause(CURL *curl, int action)
|
|||||||
|
|
||||||
} while((result == CURLE_OK) && tempsize);
|
} while((result == CURLE_OK) && tempsize);
|
||||||
|
|
||||||
free(tempwrite); /* this is unconditionally no longer used */
|
free(freewrite); /* this is unconditionally no longer used */
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
Reference in New Issue
Block a user