diff --git a/NEWS b/NEWS index db72a605120..dc66670d6a5 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 8.3.5 +- Random: + . Fixed bug GH-13544 (Pre-PHP 8.2 compatibility for mt_srand with + unknown modes). (timwolla) 14 Mar 2024, PHP 8.3.4 diff --git a/ext/random/random.c b/ext/random/random.c index f34d55f3407..4de08396de4 100644 --- a/ext/random/random.c +++ b/ext/random/random.c @@ -486,11 +486,13 @@ PHP_FUNCTION(mt_srand) Z_PARAM_LONG(mode) ZEND_PARSE_PARAMETERS_END(); - state->mode = mode; - - /* Anything that is not MT_RAND_MT19937 was interpreted as MT_RAND_PHP. */ - if (state->mode != MT_RAND_MT19937) { + switch (mode) { + case MT_RAND_PHP: + state->mode = MT_RAND_PHP; zend_error(E_DEPRECATED, "The MT_RAND_PHP variant of Mt19937 is deprecated"); + break; + default: + state->mode = MT_RAND_MT19937; } if (seed_is_null) { diff --git a/ext/random/tests/01_functions/mt_srand_unknown_mode.phpt b/ext/random/tests/01_functions/mt_srand_unknown_mode.phpt new file mode 100644 index 00000000000..dc6129aaf10 --- /dev/null +++ b/ext/random/tests/01_functions/mt_srand_unknown_mode.phpt @@ -0,0 +1,24 @@ +--TEST-- +mt_srand(): Test unknown modes +--FILE-- + +--EXPECTF-- +int(895547922) + +Deprecated: The MT_RAND_PHP variant of Mt19937 is deprecated in %s on line %d +int(1244335972) +int(895547922) +int(895547922)