diff --git a/src/tool_operate.c b/src/tool_operate.c index 8ec2da6796..52b766db9c 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -1195,16 +1195,24 @@ static CURLcode single_transfer(struct GlobalConfig *global, if(uh) { char *updated; if(curl_url_set(uh, CURLUPART_URL, per->this_url, - CURLU_GUESS_SCHEME) || - curl_url_set(uh, CURLUPART_QUERY, q, CURLU_APPENDQUERY) || - curl_url_get(uh, CURLUPART_URL, &updated, CURLU_GUESS_SCHEME)) { - curl_url_cleanup(uh); - result = CURLE_OUT_OF_MEMORY; - break; + CURLU_GUESS_SCHEME)) { + result = CURLE_FAILED_INIT; + errorf(global, "(%d) Could not parse the URL, " + "failed to set query\n", result); + config->synthetic_error = TRUE; + } + else if(curl_url_set(uh, CURLUPART_QUERY, q, CURLU_APPENDQUERY) || + curl_url_get(uh, CURLUPART_URL, &updated, + CURLU_GUESS_SCHEME)) { + result = CURLE_OUT_OF_MEMORY; + } + else { + Curl_safefree(per->this_url); /* free previous URL */ + per->this_url = updated; /* use our new URL instead! */ } - Curl_safefree(per->this_url); /* free previous URL */ - per->this_url = updated; /* use our new URL instead! */ curl_url_cleanup(uh); + if(result) + break; } }