summaryrefslogtreecommitdiff
path: root/modules/mono
diff options
context:
space:
mode:
author31 <31eee384@gmail.com>2021-04-07 00:56:38 -0500
committer31 <31eee384@gmail.com>2021-08-03 22:43:42 -0500
commit6fd2edddc003729755977688790fe9873cbd72f3 (patch)
treef7a8e7493f81651a056ec729187613b383ec7a8b /modules/mono
parentd5e13a036f9bfcba8ea1bfb6f4eb603482a74a8f (diff)
Fix 'script_class' null access when reloading a deleted C# script
Diffstat (limited to 'modules/mono')
-rw-r--r--modules/mono/csharp_script.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index 15a5807370..520262c0eb 100644
--- a/modules/mono/csharp_script.cpp
+++ b/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()) {