From fa48987356e3c1ced8ac32f10b06e578a4d23583 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sun, 6 Aug 2017 23:42:50 +0200 Subject: [PATCH] easy_events: make event data static First: this function is only used in debug-builds and not in release/real builds. It is used to drive tests using the event-based API. A pointer to the local struct is passed to CURLMOPT_TIMERDATA, but the CURLMOPT_TIMERFUNCTION calback can in fact be called even after this funtion returns, namely when curl_multi_remove_handle() is called. Reported-by: Brian Carpenter --- lib/easy.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/easy.c b/lib/easy.c index 33ae90fd5..66ec38a5e 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -653,7 +653,9 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev) */ static CURLcode easy_events(struct Curl_multi *multi) { - struct events evs= {2, FALSE, 0, NULL, 0}; + /* this struct is made static to allow it to be used after this function + returns and curl_multi_remove_handle() is called */ + static struct events evs= {2, FALSE, 0, NULL, 0}; /* if running event-based, do some further multi inits */ events_setup(multi, &evs);