From c337b093ef25f0e5914e3916dc95413c5f43494e Mon Sep 17 00:00:00 2001 From: Alexander Kyte Date: Mon, 1 Aug 2016 15:01:45 -0400 Subject: [PATCH] [runtime] Propagate async MonoError to AsyncResult --- mono/metadata/object.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mono/metadata/object.c b/mono/metadata/object.c index 5abeed72821..d17062d55ac 100644 --- a/mono/metadata/object.c +++ b/mono/metadata/object.c @@ -7532,9 +7532,17 @@ ves_icall_System_Runtime_Remoting_Messaging_AsyncResult_Invoke (MonoAsyncResult gpointer wait_event = NULL; ac->msg->exc = NULL; - res = mono_message_invoke (ares->async_delegate, ac->msg, &ac->msg->exc, &ac->out_args, &error); - if (mono_error_set_pending_exception (&error)) - return NULL; + + MonoError invoke_error; + res = mono_message_invoke (ares->async_delegate, ac->msg, &ac->msg->exc, &ac->out_args, &invoke_error); + + if (!ac->msg->exc) { + MonoException *ex = mono_error_convert_to_exception (&invoke_error); + ac->msg->exc = (MonoObject *)ex; + } else { + mono_error_cleanup (&invoke_error); + } + MONO_OBJECT_SETREF (ac, res, res); mono_monitor_enter ((MonoObject*) ares); -- 2.11.4.GIT