瀏覽代碼

Merge pull request #11078 from hpvb/fix-10717

Don't allow division by false (zero)
Hein-Pieter van Braam 8 年之前
父節點
當前提交
79c7e21847
共有 1 個文件被更改,包括 28 次插入1 次删除
  1. 28 1
      core/variant_op.cpp

+ 28 - 1
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: {