From 3197104e85957b8debb8d49a7e224618055da4b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Tue, 24 Jan 2023 19:00:41 +0100 Subject: [PATCH] Fix GH-10292 1st param of mt_srand() has UNKNOWN default on PHP <8.3 Closes GH-10429 --- NEWS | 4 ++++ ext/standard/basic_functions.stub.php | 4 ++-- ext/standard/basic_functions_arginfo.h | 4 ++-- ext/standard/tests/general_functions/rand.phpt | 13 +++++++++++++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 436d8faf46d..d1836167d7f 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,10 @@ PHP NEWS - Core: . Fixed incorrect check condition in ZEND_YIELD. (nielsdos) +- Standard: + . Fixed bug GH-10292 (Made the default value of the first param of srand() and + mt_srand() unknown). (kocsismate) + 02 Feb 2023, PHP 8.1.15 - Apache: diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index 3a5f4824566..5c46718652e 100755 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -1548,10 +1548,10 @@ function quoted_printable_encode(string $string): string {} /* mt_rand.c */ -function mt_srand(int $seed = 0, int $mode = MT_RAND_MT19937): void {} +function mt_srand(int $seed = UNKNOWN, int $mode = MT_RAND_MT19937): void {} /** @alias mt_srand */ -function srand(int $seed = 0, int $mode = MT_RAND_MT19937): void {} +function srand(int $seed = UNKNOWN, int $mode = MT_RAND_MT19937): void {} function rand(int $min = UNKNOWN, int $max = UNKNOWN): int {} diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index 693b2644cbf..2f93d91d496 100644 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 87ed2b04b9b46ce3df78d6f9d6d62bd6b2ae8fe5 */ + * Stub hash: eb6a3a2e3cf8f62e768d5d4968606438819e6cf0 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) @@ -1813,7 +1813,7 @@ ZEND_END_ARG_INFO() #define arginfo_quoted_printable_encode arginfo_base64_encode ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mt_srand, 0, 0, IS_VOID, 0) - ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, seed, IS_LONG, 0, "0") + ZEND_ARG_TYPE_INFO(0, seed, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "MT_RAND_MT19937") ZEND_END_ARG_INFO() diff --git a/ext/standard/tests/general_functions/rand.phpt b/ext/standard/tests/general_functions/rand.phpt index 73dec4eb75f..409108914fb 100644 --- a/ext/standard/tests/general_functions/rand.phpt +++ b/ext/standard/tests/general_functions/rand.phpt @@ -13,10 +13,21 @@ var_dump(rand(0,3)); var_dump(srand()); var_dump(srand(-1)); +try { + srand(mode: MT_RAND_MT19937); +} catch (Error $e) { + echo $e->getMessage() . "\n"; +} var_dump(mt_srand()); var_dump(mt_srand(-1)); +try { + mt_srand(mode: MT_RAND_MT19937); +} catch (Error $e) { + echo $e->getMessage() . "\n"; +} + var_dump(getrandmax()); var_dump(mt_getrandmax()); @@ -32,8 +43,10 @@ int(%i) int(%d) NULL NULL +srand(): Argument #1 ($seed) must be passed explicitly, because the default value is not known NULL NULL +mt_srand(): Argument #1 ($seed) must be passed explicitly, because the default value is not known int(%d) int(%d) Done