diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-10-01 14:17:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-01 14:17:34 +0200 |
commit | 39ea52f36fbb98f2dda84e71f40f205c6b76a4d8 (patch) | |
tree | fc5edf6e07a3b1c68fc349e45465092bb152feae /modules/gdscript | |
parent | 12091b39d275b15a0aa93b944a670eec8b92d51b (diff) | |
parent | f76a13dea0ac83ebb1dd45b53cb953c87786104d (diff) |
Merge pull request #41829 from RandomShaper/fix_40353
Avoid warning about harmless unfulfilled yields
Diffstat (limited to 'modules/gdscript')
-rw-r--r-- | modules/gdscript/gdscript.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index 3519038ae6..e70e3f7272 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -1044,8 +1044,10 @@ GDScript::~GDScript() { MutexLock lock(GDScriptLanguage::get_singleton()->lock); while (SelfList<GDScriptFunctionState> *E = pending_func_states.first()) { - E->self()->_clear_stack(); + // 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(); } } @@ -1451,8 +1453,10 @@ GDScriptInstance::~GDScriptInstance() { MutexLock lock(GDScriptLanguage::get_singleton()->lock); while (SelfList<GDScriptFunctionState> *E = pending_func_states.first()) { - E->self()->_clear_stack(); + // 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(); } if (script.is_valid() && owner) { |