diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp index ce0e4c147b2..7aabea735ab 100644 --- a/modules/gdnative/nativescript/nativescript.cpp +++ b/modules/gdnative/nativescript/nativescript.cpp @@ -1757,6 +1757,15 @@ void NativeReloadNode::_notification(int p_what) { } for (Map>::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::Element *S = U->get().front(); S; S = S->next()) { NativeScript *script = S->get();