diff --git a/src/script/context.cpp b/src/script/context.cpp index 610604d7..ebdf43ae 100644 --- a/src/script/context.cpp +++ b/src/script/context.cpp @@ -504,14 +504,16 @@ void instrBinary (BinaryInstructionType i, ScriptValueP& a, const ScriptValueP& a = to_script(a->toDouble() / b->toDouble()); break; case I_DIV: - if (at == SCRIPT_DOUBLE || bt == SCRIPT_DOUBLE) { + if (b->toDouble() == 0.0) a = to_script(a->toDouble() / b->toDouble()); + else if (at == SCRIPT_DOUBLE || bt == SCRIPT_DOUBLE) { a = to_script((int)(a->toDouble() / b->toDouble())); } else { a = to_script(a->toInt() / b->toInt()); } break; case I_MOD: - if (at == SCRIPT_DOUBLE || bt == SCRIPT_DOUBLE) { + if (b->toDouble() == 0.0) a = to_script(a->toDouble() / b->toDouble()); + else if (at == SCRIPT_DOUBLE || bt == SCRIPT_DOUBLE) { a = to_script(fmod(a->toDouble(), b->toDouble())); } else { a = to_script(a->toInt() % b->toInt());