From 736d8db0079b484b1f21819dd351a50e2ed0e0bc Mon Sep 17 00:00:00 2001 From: Ignacio Etcheverry Date: Tue, 24 Apr 2018 20:36:17 +0200 Subject: [PATCH] Mono: Fix crash on script load if the scripts domain isn't loaded (cherry picked from commit 89e84185e8cbd08531ae33554cf78ffba692cf7a) --- modules/mono/csharp_script.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index 1d0afa7f2d3..25407982063 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -2288,7 +2288,9 @@ RES ResourceFormatLoaderCSharpScript::load(const String &p_path, const String &p CRASH_COND(mono_domain_get() == NULL); #endif -#else +#endif + +#ifdef TOOLS_ENABLED if (Engine::get_singleton()->is_editor_hint() && mono_domain_get() == NULL) { CRASH_COND(Thread::get_caller_id() == Thread::get_main_id()); @@ -2297,14 +2299,20 @@ RES ResourceFormatLoaderCSharpScript::load(const String &p_path, const String &p // because this may be called by one of the editor's worker threads. // Attach this thread temporarily to reload the script. - MonoThread *mono_thread = mono_thread_attach(SCRIPTS_DOMAIN); - CRASH_COND(mono_thread == NULL); - script->reload(); - mono_thread_detach(mono_thread); + if (SCRIPTS_DOMAIN) { + MonoThread *mono_thread = mono_thread_attach(SCRIPTS_DOMAIN); + CRASH_COND(mono_thread == NULL); + script->reload(); + mono_thread_detach(mono_thread); + } - } else // just reload it normally + } else { // just reload it normally +#endif + script->reload(); + +#ifdef TOOLS_ENABLED + } #endif - script->reload(); if (r_error) *r_error = OK;