Browse Source

Fix type check for max/min

Ninni Pipping 2 years ago
parent
commit
c8c43997c7
1 changed files with 10 additions and 2 deletions
  1. 10 2
      core/variant/variant_utility.cpp

+ 10 - 2
core/variant/variant_utility.cpp

@@ -542,7 +542,8 @@ struct VariantUtilityFunctions {
 		}
 		}
 		Variant base = *p_args[0];
 		Variant base = *p_args[0];
 		Variant ret;
 		Variant ret;
-		for (int i = 1; i < p_argcount; i++) {
+
+		for (int i = 0; i < p_argcount; i++) {
 			Variant::Type arg_type = p_args[i]->get_type();
 			Variant::Type arg_type = p_args[i]->get_type();
 			if (arg_type != Variant::INT && arg_type != Variant::FLOAT) {
 			if (arg_type != Variant::INT && arg_type != Variant::FLOAT) {
 				r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
 				r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
@@ -550,6 +551,9 @@ struct VariantUtilityFunctions {
 				r_error.argument = i;
 				r_error.argument = i;
 				return Variant();
 				return Variant();
 			}
 			}
+			if (i == 0) {
+				continue;
+			}
 			bool valid;
 			bool valid;
 			Variant::evaluate(Variant::OP_LESS, base, *p_args[i], ret, valid);
 			Variant::evaluate(Variant::OP_LESS, base, *p_args[i], ret, valid);
 			if (!valid) {
 			if (!valid) {
@@ -582,7 +586,8 @@ struct VariantUtilityFunctions {
 		}
 		}
 		Variant base = *p_args[0];
 		Variant base = *p_args[0];
 		Variant ret;
 		Variant ret;
-		for (int i = 1; i < p_argcount; i++) {
+
+		for (int i = 0; i < p_argcount; i++) {
 			Variant::Type arg_type = p_args[i]->get_type();
 			Variant::Type arg_type = p_args[i]->get_type();
 			if (arg_type != Variant::INT && arg_type != Variant::FLOAT) {
 			if (arg_type != Variant::INT && arg_type != Variant::FLOAT) {
 				r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
 				r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
@@ -590,6 +595,9 @@ struct VariantUtilityFunctions {
 				r_error.argument = i;
 				r_error.argument = i;
 				return Variant();
 				return Variant();
 			}
 			}
+			if (i == 0) {
+				continue;
+			}
 			bool valid;
 			bool valid;
 			Variant::evaluate(Variant::OP_GREATER, base, *p_args[i], ret, valid);
 			Variant::evaluate(Variant::OP_GREATER, base, *p_args[i], ret, valid);
 			if (!valid) {
 			if (!valid) {