When curl_message is released using curl_multi_remove_handle(), it's contents are undefined. Therefore, get the information before releasing it.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
http-fetch.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
applies-to: a216f59923735f7680de8b3d9d333dc14de12b77 0516b1524ce60af57bf056f24b29983a70fb113f
Show changes to http-fetch.c +3 −3
diff --git a/http-fetch.c b/http-fetch.c index b12779d..ea8af1b 100644 --- a/http-fetch.c +++ b/http-fetch.c @@ -578,6 +578,7 @@ void process_curl_messages(void) while (curl_message != NULL) { if (curl_message->msg == CURLMSG_DONE) { + int curl_result = curl_message->data.result; slot = active_queue_head; while (slot != NULL && slot->curl != curl_message->easy_handle) @@ -587,7 +588,7 @@ void process_curl_messages(void) active_requests--; slot->done = 1; slot->in_use = 0; - slot->curl_result = curl_message->data.result; + slot->curl_result = curl_result; curl_easy_getinfo(slot->curl, CURLINFO_HTTP_CODE, &slot->http_code); @@ -599,8 +600,7 @@ void process_curl_messages(void) fprintf(stderr, "Received DONE message for unknown request!\n"); } if (request != NULL) { - request->curl_result = - curl_message->data.result; + request->curl_result = curl_result; request->http_code = slot->http_code; request->slot = NULL; request->state = COMPLETE; --- 0.99.9.GIT