Browse Source

Merge pull request #66255 from and3rson/3.x

[3.x] GDNative: Fix `script_data` error when updating placeholder scripts for GDNative libraries
Rémi Verschelde 2 years ago
parent
commit
7f560a2833
1 changed files with 9 additions and 0 deletions
  1. 9 0
      modules/gdnative/nativescript/nativescript.cpp

+ 9 - 0
modules/gdnative/nativescript/nativescript.cpp

@@ -1757,6 +1757,15 @@ void NativeReloadNode::_notification(int p_what) {
 				}
 
 				for (Map<String, Set<NativeScript *>>::Element *U = NSL->library_script_users.front(); U; U = U->next()) {
+					// Multiple GDNative libraries may be reloaded. The library and script
+					// path should match to prevent failing `NSL->library_classes` lookup
+					// from `get_script_desc()` in `script->_update_placeholder` below.
+					// This check also prevents "!script_data is true" error from occuring
+					// when e. g. re-focusing editor window.
+					if (L->key() != U->key()) {
+						continue;
+					}
+
 					for (Set<NativeScript *>::Element *S = U->get().front(); S; S = S->next()) {
 						NativeScript *script = S->get();