Fix yield check in GDScriptFunction

Fixes #31455
This commit is contained in:
Bojidar Marinov 2019-08-28 11:15:43 +03:00
parent 538328898b
commit 112aa6e367
No known key found for this signature in database
GPG key ID: 4D546A8F1E091856

View file

@ -431,6 +431,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
profile.frame_call_count++;
}
bool exit_ok = false;
bool yielded = false;
#endif
#ifdef DEBUG_ENABLED
@ -1323,6 +1324,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
#ifdef DEBUG_ENABLED
exit_ok = true;
yielded = true;
#endif
OPCODE_BREAK;
}
@ -1589,8 +1591,6 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
GDScriptLanguage::get_singleton()->script_frame_time += time_taken - function_call_time;
}
bool yielded = retvalue.is_ref() && Object::cast_to<GDScriptFunctionState>(retvalue);
// Check if this is the last time the function is resuming from yield
// Will be true if never yielded as well
// When it's the last resume it will postpone the exit from stack,