Commit cd7222dbccc for php.net

commit cd7222dbccc0a604467ff877fe5c58c9db002312
Author: Weilin Du <weilindu@php.net>
Date:   Fri Jul 3 18:16:32 2026 +0800

    Revert "ext/intl: Fix NumberFormatter parse offset overflow"

    This reverts commit 14a7eadfb25508af19ea831e51e66dc32a7b871e.

diff --git a/ext/intl/formatter/formatter_parse.cpp b/ext/intl/formatter/formatter_parse.cpp
index 7aa92488704..a475960809b 100644
--- a/ext/intl/formatter/formatter_parse.cpp
+++ b/ext/intl/formatter/formatter_parse.cpp
@@ -50,12 +50,7 @@ U_CFUNC PHP_FUNCTION( numfmt_parse )
 	}

 	if (zposition) {
-		zend_long long_position = zval_get_long(zposition);
-		if (ZEND_LONG_EXCEEDS_INT(long_position)) {
-			zend_argument_value_error(hasThis() ? 3 : 4, "must be between %d and %d", INT32_MIN, INT32_MAX);
-			RETURN_THROWS();
-		}
-		position = (int32_t) long_position;
+		position = (int32_t) zval_get_long(zposition);
 	}

 	/* Fetch the object. */
@@ -160,13 +155,8 @@ U_CFUNC PHP_FUNCTION( numfmt_parse_currency )
 	intl_stringFromChar(ustr, str, str_len, &INTL_DATA_ERROR_CODE(nfo));
 	INTL_METHOD_CHECK_STATUS( nfo, "String conversion to UTF-16 failed" );

-	if (zposition) {
-		zend_long long_position = zval_get_long(zposition);
-		if (ZEND_LONG_EXCEEDS_INT(long_position)) {
-			zend_argument_value_error(hasThis() ? 3 : 4, "must be between %d and %d", INT32_MIN, INT32_MAX);
-			RETURN_THROWS();
-		}
-		position = (int32_t) long_position;
+	if(zposition) {
+		position = (int32_t) zval_get_long(zposition);
 	}

 	icu::ParsePosition pp(position);
diff --git a/ext/intl/tests/formatter_parse_offset_overflow.phpt b/ext/intl/tests/formatter_parse_offset_overflow.phpt
deleted file mode 100644
index 9421c889751..00000000000
--- a/ext/intl/tests/formatter_parse_offset_overflow.phpt
+++ /dev/null
@@ -1,46 +0,0 @@
---TEST--
-NumberFormatter parse offset overflow
---EXTENSIONS--
-intl
---SKIPIF--
-<?php if (PHP_INT_SIZE != 8) die("skip: 64-bit only"); ?>
---FILE--
-<?php
-$fmt = new NumberFormatter('en_US', NumberFormatter::DECIMAL);
-$currencyFmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
-
-function print_error(callable $callback): void {
-    try {
-        $callback();
-    } catch (Throwable $e) {
-        echo $e::class, ': ', $e->getMessage(), PHP_EOL;
-    }
-}
-
-$offset = PHP_INT_MAX;
-print_error(function () use ($fmt, &$offset) {
-    $fmt->parse('123', NumberFormatter::TYPE_DOUBLE, $offset);
-});
-
-$offset = PHP_INT_MAX;
-print_error(function () use ($fmt, &$offset) {
-    numfmt_parse($fmt, '123', NumberFormatter::TYPE_DOUBLE, $offset);
-});
-
-$currency = '';
-$offset = PHP_INT_MAX;
-print_error(function () use ($currencyFmt, &$currency, &$offset) {
-    $currencyFmt->parseCurrency('$123.00', $currency, $offset);
-});
-
-$currency = '';
-$offset = PHP_INT_MAX;
-print_error(function () use ($currencyFmt, &$currency, &$offset) {
-    numfmt_parse_currency($currencyFmt, '$123.00', $currency, $offset);
-});
-?>
---EXPECT--
-ValueError: NumberFormatter::parse(): Argument #3 ($offset) must be between -2147483648 and 2147483647
-ValueError: numfmt_parse(): Argument #4 ($offset) must be between -2147483648 and 2147483647
-ValueError: NumberFormatter::parseCurrency(): Argument #3 ($offset) must be between -2147483648 and 2147483647
-ValueError: numfmt_parse_currency(): Argument #4 ($offset) must be between -2147483648 and 2147483647