bufref: add Curl_bufref_dup that returns a strdup()ed version
No binary (build failed)
—
(log yok)
| @@ -93,3 +93,12 @@ size_t Curl_bufref_len(const struct bufref *br); | |
| ``` | |
| Returns the stored length of the referenced buffer. | |
| + | |
| + | ## `dup` |
| + | |
| + | ```c |
| + | char *Curl_bufref_dup(const struct bufref *br); |
| + | ``` |
| + | |
| + | Returns a strdup() version of the buffer. Note that this assumes that the |
| + | bufref is null terminated. |
| @@ -45,4 +45,7 @@ size_t Curl_bufref_len(const struct bufref *br); | |
| CURLcode Curl_bufref_memdup0(struct bufref *br, const void *ptr, size_t len); | |
| void Curl_bufref_free(struct bufref *br); | |
| + | /* return a strdup() version of the buffer */ |
| + | #define Curl_bufref_dup(x) curlx_strdup(Curl_bufref_ptr(x)) |
| + | |
| #endif | |
| @@ -1019,14 +1019,14 @@ CURL *curl_easy_duphandle(CURL *d) | |
| if(Curl_bufref_ptr(&data->state.url)) { | |
| Curl_bufref_set(&outcurl->state.url, | |
| - | curlx_strdup(Curl_bufref_ptr(&data->state.url)), 0, |
| + | Curl_bufref_dup(&data->state.url), 0, |
| curl_free); | |
| if(!Curl_bufref_ptr(&outcurl->state.url)) | |
| goto fail; | |
| } | |
| if(Curl_bufref_ptr(&data->state.referer)) { | |
| Curl_bufref_set(&outcurl->state.referer, | |
| - | curlx_strdup(Curl_bufref_ptr(&data->state.referer)), 0, |
| + | Curl_bufref_dup(&data->state.referer), 0, |
| curl_free); | |
| if(!Curl_bufref_ptr(&outcurl->state.referer)) | |
| goto fail; | |
| @@ -612,7 +612,7 @@ CURLcode Curl_http_auth_act(struct Curl_easy *data) | |
| out in bug #2284386 */ | |
| curlx_free(data->req.newurl); | |
| /* clone URL */ | |
| - | data->req.newurl = curlx_strdup(Curl_bufref_ptr(&data->state.url)); |
| + | data->req.newurl = Curl_bufref_dup(&data->state.url); |
| if(!data->req.newurl) | |
| return CURLE_OUT_OF_MEMORY; | |
| } | |
| @@ -626,7 +626,7 @@ CURLcode Curl_http_auth_act(struct Curl_easy *data) | |
| if((data->state.httpreq != HTTPREQ_GET) && | |
| (data->state.httpreq != HTTPREQ_HEAD)) { | |
| /* clone URL */ | |
| - | data->req.newurl = curlx_strdup(Curl_bufref_ptr(&data->state.url)); |
| + | data->req.newurl = Curl_bufref_dup(&data->state.url); |
| if(!data->req.newurl) | |
| return CURLE_OUT_OF_MEMORY; | |
| data->state.authhost.done = TRUE; | |
| @@ -912,7 +912,7 @@ static CURLcode auth_spnego(struct Curl_easy *data, | |
| &conn->http_negotiate_state; | |
| if(!result) { | |
| curlx_free(data->req.newurl); | |
| - | data->req.newurl = curlx_strdup(Curl_bufref_ptr(&data->state.url)); |
| + | data->req.newurl = Curl_bufref_dup(&data->state.url); |
| if(!data->req.newurl) | |
| return CURLE_OUT_OF_MEMORY; | |
| data->state.authproblem = FALSE; | |
| @@ -4051,7 +4051,7 @@ static CURLcode http_on_response(struct Curl_easy *data, | |
| data->state.disableexpect = TRUE; | |
| Curl_req_abort_sending(data); | |
| DEBUGASSERT(!data->req.newurl); | |
| - | data->req.newurl = curlx_strdup(Curl_bufref_ptr(&data->state.url)); |
| + | data->req.newurl = Curl_bufref_dup(&data->state.url); |
| if(!data->req.newurl) { | |
| result = CURLE_OUT_OF_MEMORY; | |
| goto out; | |
| @@ -2011,7 +2011,7 @@ static CURLMcode state_performing(struct Curl_easy *data, | |
| data->state.errorbuf = FALSE; | |
| if(!newurl) | |
| /* typically for HTTP_1_1_REQUIRED error on first flight */ | |
| - | newurl = curlx_strdup(Curl_bufref_ptr(&data->state.url)); |
| + | newurl = Curl_bufref_dup(&data->state.url); |
| if(!newurl) { | |
| result = CURLE_OUT_OF_MEMORY; | |
| } | |
| @@ -671,7 +671,7 @@ CURLcode Curl_retry_request(struct Curl_easy *data, char **url) | |
| } | |
| infof(data, "Connection died, retrying a fresh connect (retry count: %d)", | |
| data->state.retrycount); | |
| - | *url = curlx_strdup(Curl_bufref_ptr(&data->state.url)); |
| + | *url = Curl_bufref_dup(&data->state.url); |
| if(!*url) | |
| return CURLE_OUT_OF_MEMORY; | |