ソースを参照

Fix 'script_class' null access when reloading a deleted C# script

31 4 年 前
コミット
6fd2edddc0
1 ファイル変更7 行追加0 行削除
  1. 7 0
      modules/mono/csharp_script.cpp

+ 7 - 0
modules/mono/csharp_script.cpp

@@ -875,6 +875,13 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
 	// As scripts are going to be reloaded, must proceed without locking here
 
 	for (Ref<CSharpScript> &script : scripts) {
+		// If someone removes a script from a node, deletes the script, builds, adds a script to the
+		// same node, then builds again, the script might have no path and also no script_class. In
+		// that case, we can't (and don't need to) reload it.
+		if (script->get_path().is_empty() && !script->script_class) {
+			continue;
+		}
+
 		to_reload.push_back(script);
 
 		if (script->get_path().is_empty()) {