diff options
-rw-r--r-- | core/variant_op.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/core/variant_op.cpp b/core/variant_op.cpp index b6e114b853..be8a8de8b1 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -670,7 +670,34 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a, const Variant & switch (p_a.type) { DEFAULT_OP_FAIL(NIL); - DEFAULT_OP_NUM(/, BOOL, _bool); + case BOOL: { + switch (p_b.type) { + case BOOL: { + int64_t b = p_b._data._bool; + if (b == 0) { + + r_valid = false; + _RETURN("Division By False"); + } + _RETURN(p_a._data._bool / b); + + } break; + case INT: { + int64_t b = p_b._data._int; + if (b == 0) { + + r_valid = false; + _RETURN("Division By Zero"); + } + _RETURN(p_a._data._bool / b); + + } break; + case REAL: _RETURN(p_a._data._bool / p_b._data._real); + default: {} + } + r_valid = false; + return; + }; case INT: { switch (p_b.type) { case BOOL: { |