Backport 65910 for Godot 3

(cherry picked from commit 354e656531)
This commit is contained in:
Capital 2024-09-25 12:57:56 -04:00 committed by lawnjelly
parent 4205412c7e
commit af885004f1
3 changed files with 22 additions and 2 deletions

View file

@ -83,7 +83,12 @@ void GDScript::_clear_pending_func_states() {
// Order matters since clearing the stack may already cause
// the GDSCriptFunctionState to be destroyed and thus removed from the list.
pending_func_states.remove(E);
E->self()->_clear_stack();
GDScriptFunctionState *state = E->self();
ObjectID state_id = state->get_instance_id();
state->_clear_connections();
if (ObjectDB::get_instance(state_id)) {
state->_clear_stack();
}
}
GDScriptLanguage::get_singleton()->lock.unlock();
}
@ -1372,7 +1377,12 @@ GDScriptInstance::~GDScriptInstance() {
// Order matters since clearing the stack may already cause
// the GDSCriptFunctionState to be destroyed and thus removed from the list.
pending_func_states.remove(E);
E->self()->_clear_stack();
GDScriptFunctionState *state = E->self();
ObjectID state_id = state->get_instance_id();
state->_clear_connections();
if (ObjectDB::get_instance(state_id)) {
state->_clear_stack();
}
}
if (script.is_valid() && owner) {