Merge pull request #11078 from hpvb/fix-10717
Don't allow division by false (zero)
This commit is contained in:
commit
79c7e21847
1 changed files with 28 additions and 1 deletions
|
@ -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: {
|
||||
|
|
Loading…
Reference in a new issue