diff options
| author | Ignacio Etcheverry <neikeq@users.noreply.github.com> | 2018-07-04 03:45:10 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-04 03:45:10 +0200 |
| commit | ac9e736b065f0ec30f3b1af19c41b7cd3a0371e6 (patch) | |
| tree | 9249cc66bd2250defda0ca66535791dac433343e /modules/mono/signal_awaiter_utils.cpp | |
| parent | 88b89c20848ebccfac6451bbaa88e76e977aec82 (diff) | |
| parent | 4739cb8c0003a7c35220ce43d8263df617c6fbe0 (diff) | |
| download | redot-engine-ac9e736b065f0ec30f3b1af19c41b7cd3a0371e6.tar.gz | |
Merge pull request #16987 from neikeq/pending-exceptions
Mono: Pending exceptions and cleanup
Diffstat (limited to 'modules/mono/signal_awaiter_utils.cpp')
| -rw-r--r-- | modules/mono/signal_awaiter_utils.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/modules/mono/signal_awaiter_utils.cpp b/modules/mono/signal_awaiter_utils.cpp index b9d8520ac9..54720652fa 100644 --- a/modules/mono/signal_awaiter_utils.cpp +++ b/modules/mono/signal_awaiter_utils.cpp @@ -101,11 +101,13 @@ Variant SignalAwaiterHandle::_signal_callback(const Variant **p_args, int p_argc GDMonoUtils::SignalAwaiter_SignalCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, SignalCallback); - MonoObject *ex = NULL; - thunk(get_target(), signal_args, &ex); + MonoException *exc = NULL; + GD_MONO_BEGIN_RUNTIME_INVOKE; + thunk(get_target(), signal_args, (MonoObject **)&exc); + GD_MONO_END_RUNTIME_INVOKE; - if (ex) { - mono_print_unhandled_exception(ex); + if (exc) { + GDMonoUtils::set_pending_exception(exc); ERR_FAIL_V(Variant()); } @@ -133,11 +135,13 @@ SignalAwaiterHandle::~SignalAwaiterHandle() { MonoObject *awaiter = get_target(); if (awaiter) { - MonoObject *ex = NULL; - thunk(awaiter, &ex); + MonoException *exc = NULL; + GD_MONO_BEGIN_RUNTIME_INVOKE; + thunk(awaiter, (MonoObject **)&exc); + GD_MONO_END_RUNTIME_INVOKE; - if (ex) { - mono_print_unhandled_exception(ex); + if (exc) { + GDMonoUtils::set_pending_exception(exc); ERR_FAIL_V(); } } |
