Category
Regression: · php-src-strict · RegexIterator::setMode invalid mode ValueError citation
Problem
RegexIterator::setMode(99) on Zend throws ValueError: RegexIterator::setMode(): Argument #1 ($mode) must be RegexIterator::MATCH, …. VM throws the same constraint text but attributes it to RegexIterator::__construct(): Argument #3 ($mode) (constructor wording reused for the setter).
Probed 2026-08-16 — host Zend PHP 8.2+ vs php bin/vm.php.
| Repro |
Zend 8.2+ |
VM (2026-08-16) |
(new RegexIterator(new ArrayIterator(['a']), '/a/'))->setMode(99) |
ValueError: RegexIterator::setMode(): Argument #1 ($mode) must be … |
ValueError: RegexIterator::__construct(): Argument #3 ($mode) must be … |
php-src reference
PHP implementation target
Repro
./script/docker-exec.sh -- bash -lc 'php test/repro/maintainer_gap_regexiterator_setmode_valueerror.php'
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/maintainer_gap_regexiterator_setmode_valueerror.php'
Done when
Category
Regression:· php-src-strict · RegexIterator::setMode invalid mode ValueError citationProblem
RegexIterator::setMode(99)on Zend throwsValueError: RegexIterator::setMode(): Argument #1 ($mode) must be RegexIterator::MATCH, …. VM throws the same constraint text but attributes it toRegexIterator::__construct(): Argument #3 ($mode)(constructor wording reused for the setter).Probed 2026-08-16 — host Zend PHP 8.2+ vs
php bin/vm.php.(new RegexIterator(new ArrayIterator(['a']), '/a/'))->setMode(99)ValueError: RegexIterator::setMode(): Argument #1 ($mode) must be …ValueError: RegexIterator::__construct(): Argument #3 ($mode) must be …php-src reference
ext/spl/spl_iterators.c—zim_RegexIterator_setModeValueError for invalid modeext/spl/spl_iterators.stub.php—setMode(int $mode): voidPHP implementation target
ext/spl/RegexIterator builtin / mode validation helper — emit ValueError withRegexIterator::setMode(): Argument #1 ($mode)(do not reuse__constructarg Stdlib: ceil, floor, intval and expanded PHPT specs #3 string)runtime/*.cRepro
Done when
setMode(99)ValueError message matches Zend (RegexIterator::setMode(): Argument #1 ($mode) …)