Merge pull request #101536 from xsellier/gdscript_crash_modulo

Fix crash when using a modulo operator between a float and an integer
This commit is contained in:
Thaddeus Crews 2025-07-01 17:57:48 -05:00
commit 2cf48a97b9
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC

View file

@ -588,7 +588,8 @@ void GDScriptByteCodeGenerator::write_binary_operator(const Address &p_target, V
if (valid && (p_operator == Variant::OP_DIVIDE || p_operator == Variant::OP_MODULE)) { if (valid && (p_operator == Variant::OP_DIVIDE || p_operator == Variant::OP_MODULE)) {
switch (p_left_operand.type.builtin_type) { switch (p_left_operand.type.builtin_type) {
case Variant::INT: case Variant::INT:
valid = p_right_operand.type.builtin_type != Variant::INT; // Cannot use modulo between int / float, we should raise an error later in GDScript
valid = p_right_operand.type.builtin_type != Variant::INT && p_operator == Variant::OP_DIVIDE;
break; break;
case Variant::VECTOR2I: case Variant::VECTOR2I:
case Variant::VECTOR3I: case Variant::VECTOR3I: