From: Johannes Schindelin Date: Sun, 6 Nov 2005 23:59:39 +0000 (+0100) Subject: http-fetch: do not use curl_message after releasing it X-Git-Tag: v0.99.9e^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=90279074ca5cc336a8bfffd47d19d089b291b432;p=git-core%2Fgit.git http-fetch: do not use curl_message after releasing it 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 Signed-off-by: Junio C Hamano --- diff --git a/http-fetch.c b/http-fetch.c index b12779dcb..ea8af1b2d 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;