diff --git a/lib/transfer.c b/lib/transfer.c index 5823921484d328239a6e9e909d58ab665723f809..1dad615f4cda0c4b96eaac07d46e582ff0844a35 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -910,6 +910,7 @@ CURLcode Curl_perform(CURL *curl) /* TBD: set the URL with curl_setopt() */ data->url = newurl; + newurl = NULL; /* don't free! */ data->bits.urlstringalloc = TRUE; /* the URL is allocated */ diff --git a/lib/url.c b/lib/url.c index 8c23ae9983104e6ec6fa5f8e69e96e66f71bdb40..787bc18bef4d66bc68d53a60d00438b98a05573a 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2233,6 +2233,12 @@ CURLcode Curl_done(struct connectdata *conn) conn->bits.rangestringalloc = FALSE; } + /* Cleanup possible redirect junk */ + if(conn->newurl) { + free(conn->newurl); + conn->newurl = NULL; + } + /* this calls the protocol-specific function pointer previously set */ if(conn->curl_done) result = conn->curl_done(conn);