diff --git a/src/Forms/Validator.php b/src/Forms/Validator.php index 66acfdd62..11b838267 100644 --- a/src/Forms/Validator.php +++ b/src/Forms/Validator.php @@ -290,10 +290,11 @@ public static function validateNumeric(IControl $control): bool */ public static function validateInteger(IControl $control): bool { - if (Validators::isNumericInt($value = $control->getValue())) { - if (!is_float($tmp = $value * 1)) { // bigint leave as string - $control->setValue($tmp); - } + if ( + Validators::isNumericInt($value = $control->getValue()) + && !is_float($tmp = $value * 1) // too big for int? + ) { + $control->setValue($tmp); return true; } return false; diff --git a/tests/Forms/Controls.TestBase.validators.phpt b/tests/Forms/Controls.TestBase.validators.phpt index 43c2516f9..400852b31 100644 --- a/tests/Forms/Controls.TestBase.validators.phpt +++ b/tests/Forms/Controls.TestBase.validators.phpt @@ -196,7 +196,7 @@ test(function () { Assert::same('123.5', $control->value); $control->value = PHP_INT_MAX . PHP_INT_MAX; - Assert::true(Validator::validateInteger($control)); + Assert::false(Validator::validateInteger($control)); Assert::same(PHP_INT_MAX . PHP_INT_MAX, $control->value); });