From f03b7529465497328745f519edff79c160bb6d4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Tue, 26 Jul 2022 18:01:39 +0200 Subject: [PATCH 1/2] Use ValueError if an invalid mode is passed to Mt19937 --- NEWS | 2 ++ ext/random/engine_mt19937.c | 2 +- ext/random/tests/02_engine/mt19937_error.phpt | 14 +++++++------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index 04b986bcb8353..ee37e2fe806a1 100644 --- a/NEWS +++ b/NEWS @@ -26,6 +26,8 @@ PHP NEWS generating uniform integers within a given range). (timwolla) . Fixed bug GH-9089 (Fix memory leak on Randomizer::__construct() call twice) (zeriyoshi) + . Change Mt19937 to throw a ValueError instead of InvalidArgumentException + for invalid $mode. (timwolla) - Sockets: . Added SOL_FILTER socket option for Solaris. (David Carlier) diff --git a/ext/random/engine_mt19937.c b/ext/random/engine_mt19937.c index 760d0df90363b..6a48e1e464f55 100644 --- a/ext/random/engine_mt19937.c +++ b/ext/random/engine_mt19937.c @@ -273,7 +273,7 @@ PHP_METHOD(Random_Engine_Mt19937, __construct) state->mode = MT_RAND_PHP; break; default: - zend_argument_error(spl_ce_InvalidArgumentException, 2, "mode must be MT_RAND_MT19937 or MT_RAND_PHP"); + zend_argument_value_error(2, "mode must be MT_RAND_MT19937 or MT_RAND_PHP"); RETURN_THROWS(); } diff --git a/ext/random/tests/02_engine/mt19937_error.phpt b/ext/random/tests/02_engine/mt19937_error.phpt index fe72bb8898c27..b04244d0a3fb2 100644 --- a/ext/random/tests/02_engine/mt19937_error.phpt +++ b/ext/random/tests/02_engine/mt19937_error.phpt @@ -3,12 +3,12 @@ Random: Engine: Mt19937: error pattern --FILE-- getMessage() . PHP_EOL; -} +new \Random\Engine\Mt19937(1234, 2); ?> ---EXPECT-- -Random\Engine\Mt19937::__construct(): Argument #2 ($mode) mode must be MT_RAND_MT19937 or MT_RAND_PHP +--EXPECTF-- +Fatal error: Uncaught ValueError: Random\Engine\Mt19937::__construct(): Argument #2 ($mode) mode must be MT_RAND_MT19937 or MT_RAND_PHP in %s:%d +Stack trace: +#0 %s(%d): Random\Engine\Mt19937->__construct(1234, 2) +#1 {main} + thrown in %s on line %d From 63743b36b546ce757bb147d5e61490c032f447c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Tue, 26 Jul 2022 21:08:34 +0200 Subject: [PATCH 2/2] Do not test the stack trace in 02_engine/mt19937_error.phpt --- ext/random/tests/02_engine/mt19937_error.phpt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ext/random/tests/02_engine/mt19937_error.phpt b/ext/random/tests/02_engine/mt19937_error.phpt index b04244d0a3fb2..0b9468b698dbf 100644 --- a/ext/random/tests/02_engine/mt19937_error.phpt +++ b/ext/random/tests/02_engine/mt19937_error.phpt @@ -3,12 +3,12 @@ Random: Engine: Mt19937: error pattern --FILE-- getMessage(), PHP_EOL; +} ?> ---EXPECTF-- -Fatal error: Uncaught ValueError: Random\Engine\Mt19937::__construct(): Argument #2 ($mode) mode must be MT_RAND_MT19937 or MT_RAND_PHP in %s:%d -Stack trace: -#0 %s(%d): Random\Engine\Mt19937->__construct(1234, 2) -#1 {main} - thrown in %s on line %d +--EXPECT-- +Random\Engine\Mt19937::__construct(): Argument #2 ($mode) mode must be MT_RAND_MT19937 or MT_RAND_PHP