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 */
}
}
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);
/* Release the previous storage at `charp' and replace by a dynamic storage
copy of `s'. Return CURLE_OK or CURLE_OUT_OF_MEMORY. */
- if(*charp) {
- free(*charp);
- *charp = (char *) NULL;
- }
+ Curl_safefree(*charp);
if(s) {
s = strdup(s);
/* Free the pathbuffer */
Curl_safefree(data->state.pathbuffer);
+ data->state.path = NULL;
+
Curl_safefree(data->state.proto.generic);
/* Close down all open SSL info and sessions */
Curl_safefree(data->state.scratch);
Curl_ssl_free_certinfo(data);
- if(data->change.referer_alloc)
- free(data->change.referer);
+ if(data->change.referer_alloc) {
+ Curl_safefree(data->change.referer);
+ data->change.referer_alloc = FALSE;
+ }
+ data->change.referer = NULL;
- if(data->change.url_alloc)
- free(data->change.url);
+ if(data->change.url_alloc) {
+ Curl_safefree(data->change.url);
+ data->change.url_alloc = FALSE;
+ }
+ data->change.url = NULL;
Curl_safefree(data->state.headerbuff);
* String to set in the HTTP Referer: field.
*/
if(data->change.referer_alloc) {
- free(data->change.referer);
+ Curl_safefree(data->change.referer);
data->change.referer_alloc = FALSE;
}
result = setstropt(&data->set.str[STRING_SET_REFERER],
*/
if(data->change.url_alloc) {
/* the already set URL is allocated, free it first! */
- free(data->change.url);
- data->change.url_alloc=FALSE;
+ Curl_safefree(data->change.url);
+ data->change.url_alloc = FALSE;
}
result = setstropt(&data->set.str[STRING_SET_URL],
va_arg(param, char *));
if(!url)
return CURLE_OUT_OF_MEMORY;
- if(data->change.url_alloc)
- free(data->change.url);
+ if(data->change.url_alloc) {
+ Curl_safefree(data->change.url);
+ data->change.url_alloc = FALSE;
+ }
data->change.url = url;
data->change.url_alloc = TRUE;
/* host can change, when doing keepalive with a proxy ! */
if(conn->bits.proxy) {
- free(conn->host.rawalloc);
+ Curl_safefree(conn->host.rawalloc);
conn->host=old_conn->host;
}
else
- free(old_conn->host.rawalloc); /* free the newly allocated name buffer */
+ Curl_safefree(old_conn->host.rawalloc); /* free the newly allocated name buffer */
/* persist connection info in session handle */
Curl_persistconninfo(conn);
*/
Curl_safefree(data->state.pathbuffer);
+ data->state.path = NULL;
+
data->state.pathbuffer = malloc(urllen+2);
if(NULL == data->state.pathbuffer)
return CURLE_OUT_OF_MEMORY; /* really bad error */
data->state.path = data->state.pathbuffer;
conn->host.rawalloc = malloc(urllen+2);
- if(NULL == conn->host.rawalloc)
+ if(NULL == conn->host.rawalloc) {
+ Curl_safefree(data->state.pathbuffer);
+ data->state.path = NULL;
return CURLE_OUT_OF_MEMORY;
+ }
conn->host.name = conn->host.rawalloc;
conn->host.name[0] = 0;
return CURLE_OUT_OF_MEMORY;
}
+ if(data->change.url_alloc) {
+ Curl_safefree(data->change.url);
+ data->change.url_alloc = FALSE;
+ }
+
data->change.url = reurl;
data->change.url_alloc = TRUE; /* free this later */
}