Fix "!script_data is true" when updating placeholder scripts for GDNative libraries

Co-authored-by: geekrelief <geekrelief@gmail.com>
(cherry picked from commit 1af4ba04cd)
This commit is contained in:
Andrew Dunai 2022-09-22 13:52:05 +03:00 committed by Haoyu Qiu
parent 63c3909669
commit e8a4e766ef
1 changed files with 9 additions and 0 deletions

View File

@ -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()) { 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()) { for (Set<NativeScript *>::Element *S = U->get().front(); S; S = S->next()) {
NativeScript *script = S->get(); NativeScript *script = S->get();