From: Johannes Schindelin <johannes.schindelin@xxxxxx> In 93b980e58f5 (http: use xmalloc with cURL, 2019-08-15), we started to ask cURL to use `xmalloc()`, and if compiled with nedmalloc, that means implicitly a different allocator than the system one. Which means that all of cURL's allocations and releases now _need_ to use that allocator. However, the `http_options()` function used `slist_append()` to add any configured extra HTTP header(s) _before_ asking cURL to use `xmalloc()`, and `http_cleanup()` would release them _afterwards_, i.e. in the presence of custom allocators, cURL would attempt to use the wrong allocator to release the memory. Let's fix this by moving the initialization _before_ the `http_options()` function is called. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- http.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/http.c b/http.c index 27aa0a3192..13f50ba158 100644 --- a/http.c +++ b/http.c @@ -1062,6 +1062,9 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) char *normalized_url; struct urlmatch_config config = { STRING_LIST_INIT_DUP }; + if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) + die("curl_global_init failed"); + config.section = "http"; config.key = NULL; config.collect_fn = http_options; @@ -1101,9 +1104,6 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) } #endif - if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) - die("curl_global_init failed"); - http_proactive_auth = proactive_auth; if (remote && remote->http_proxy) -- gitgitgadget