aboutsummaryrefslogtreecommitdiff
path: root/lib/transfer.c
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2011-10-12 21:32:10 +0200
committerYang Tse <yangsita@gmail.com>2011-10-12 21:32:10 +0200
commitbff78cc18e8dc22926d4b0219e6fac08758ed790 (patch)
tree64fd14241294aed026d68aaa92821484965b83b1 /lib/transfer.c
parent584dc8b8af862f7f47a3a9f02f874ac0bd0076be (diff)
OOM handling/cleanup slight adjustments
Diffstat (limited to 'lib/transfer.c')
-rw-r--r--lib/transfer.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 3d243674a..413a28082 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -1806,15 +1806,14 @@ CURLcode Curl_follow(struct SessionHandle *data,
when we get the next URL. We pick the ->url field, which may or may
not be 100% correct */
- if(data->change.referer_alloc)
- /* If we already have an allocated referer, free this first */
- free(data->change.referer);
+ if(data->change.referer_alloc) {
+ Curl_safefree(data->change.referer);
+ data->change.referer_alloc = FALSE;
+ }
data->change.referer = strdup(data->change.url);
- if(!data->change.referer) {
- data->change.referer_alloc = FALSE;
+ if(!data->change.referer)
return CURLE_OUT_OF_MEMORY;
- }
data->change.referer_alloc = TRUE; /* yes, free this later */
}
}
@@ -1861,12 +1860,13 @@ CURLcode Curl_follow(struct SessionHandle *data,
if(disallowport)
data->state.allow_port = FALSE;
- if(data->change.url_alloc)
- free(data->change.url);
- else
- data->change.url_alloc = TRUE; /* the URL is allocated */
+ if(data->change.url_alloc) {
+ Curl_safefree(data->change.url);
+ data->change.url_alloc = FALSE;
+ }
data->change.url = newurl;
+ data->change.url_alloc = TRUE;
newurl = NULL; /* don't free! */
infof(data, "Issue another request to this URL: '%s'\n", data->change.url);