Browse Source

C#: Fix crash with `DisposablesTracker_OnGodotShuttingDown`

RedworkDE 2 years ago
parent
commit
d515fcc47a
2 changed files with 4 additions and 6 deletions
  1. 4 0
      modules/mono/csharp_script.cpp
  2. 0 6
      modules/mono/mono_gd/gd_mono.cpp

+ 4 - 0
modules/mono/csharp_script.cpp

@@ -139,6 +139,10 @@ void CSharpLanguage::finalize() {
 		return;
 	}
 
+	if (gdmono && gdmono->is_runtime_initialized() && GDMonoCache::godot_api_cache_updated) {
+		GDMonoCache::managed_callbacks.DisposablesTracker_OnGodotShuttingDown();
+	}
+
 	finalizing = true;
 
 	// Make sure all script binding gchandles are released before finalizing GDMono

+ 0 - 6
modules/mono/mono_gd/gd_mono.cpp

@@ -534,12 +534,6 @@ GDMono::GDMono() {
 GDMono::~GDMono() {
 	finalizing_scripts_domain = true;
 
-	if (is_runtime_initialized()) {
-		if (GDMonoCache::godot_api_cache_updated) {
-			GDMonoCache::managed_callbacks.DisposablesTracker_OnGodotShuttingDown();
-		}
-	}
-
 	if (hostfxr_dll_handle) {
 		OS::get_singleton()->close_dynamic_library(hostfxr_dll_handle);
 	}