diff --git a/ext/random/random.c b/ext/random/random.c index afd4cc1a77bb6..28411e4e1a1ef 100644 --- a/ext/random/random.c +++ b/ext/random/random.c @@ -480,11 +480,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 0000000000000..dc6129aaf10fa --- /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)