com php-src: Make mode selection part of mt_srand(): ext/standard/basic_functions.c ext/standard/mt_rand.c ext/standard/php_math.h
ext/standard/tests/math/mt_r and_value.phpt ext/standard/tests/math/mt_srand_error .phpt ext/standard/tests/math/srand_error.phpt

From: Date: Thu, 07 Jul 2016 14:14:06 +0000
Subject: com php-src: Make mode selection part of mt_srand(): ext/standard/basic_functions.c ext/standard/mt_rand.c ext/standard/php_math.h
ext/standard/tests/math/mt_r and_value.phpt ext/standard/tests/math/mt_srand_error .phpt ext/standard/tests/math/srand_error.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-93055@lists.php.net to get a copy of this message
Commit: 69e7d8dcd5ccfbd4e46cdf502e7e8b0f3aa339bc Author: Leigh <leigh@php.net> Thu, 7 Jul 2016 15:14:06 +0100 Parents: bb1f8228ed8d2a92c7785bd7c095782df93e15ca Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=69e7d8dcd5ccfbd4e46cdf502e7e8b0f3aa339bc Log: Make mode selection part of mt_srand() The mode of operation is intrinsically linked to seeding, so this makes a lot of sense Changed paths: M ext/standard/basic_functions.c M ext/standard/mt_rand.c M ext/standard/php_math.h M ext/standard/tests/math/mt_rand_value.phpt M ext/standard/tests/math/mt_srand_error.phpt M ext/standard/tests/math/srand_error.phpt Diff: diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 4c1321b..a3ea512 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -1886,6 +1886,7 @@ ZEND_END_ARG_INFO() /* {{{ mt_rand.c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_mt_srand, 0, 0, 0) ZEND_ARG_INFO(0, seed) + ZEND_ARG_INFO(0, mode) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_mt_rand, 0, 0, 0) @@ -1895,10 +1896,6 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_mt_getrandmax, 0) ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_mt_rand_mode, 0, 0, 1) - ZEND_ARG_INFO(0, mode) -ZEND_END_ARG_INFO() /* }}} */ /* {{{ random.c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_random_bytes, 0, 0, 0) @@ -2858,7 +2855,6 @@ const zend_function_entry basic_functions[] = { /* {{{ */ PHP_FE(mt_rand, arginfo_mt_rand) PHP_FE(mt_srand, arginfo_mt_srand) PHP_FE(mt_getrandmax, arginfo_mt_getrandmax) - PHP_FE(mt_rand_mode, arginfo_mt_rand_mode) PHP_FE(random_bytes, arginfo_random_bytes) PHP_FE(random_int, arginfo_random_int) diff --git a/ext/standard/mt_rand.c b/ext/standard/mt_rand.c index 04f4f8e..fa7c004 100644 --- a/ext/standard/mt_rand.c +++ b/ext/standard/mt_rand.c @@ -189,13 +189,22 @@ PHPAPI uint32_t php_mt_rand(void) PHP_FUNCTION(mt_srand) { zend_long seed = 0; + zend_long mode = MT_RAND_MT19937; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &seed) == FAILURE) + if (zend_parse_parameters(ZEND_NUM_ARGS(), "|ll", &seed, &mode) == FAILURE) return; if (ZEND_NUM_ARGS() == 0) seed = GENERATE_SEED(); + switch (mode) { + case MT_RAND_PHP: + BG(mt_rand_mode) = MT_RAND_PHP; + break; + default: + BG(mt_rand_mode) = MT_RAND_MT19937; + } + php_mt_srand(seed); } /* }}} */ @@ -283,25 +292,6 @@ PHP_FUNCTION(mt_getrandmax) } /* }}} */ -/* {{{ proto int mt_rand_mode(int) - Switch mt_rand between standard and legacy modes */ -PHP_FUNCTION(mt_rand_mode) -{ - zend_long mode; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &mode) == FAILURE) { - return; - } - - switch (mode) { - case MT_RAND_PHP: - BG(mt_rand_mode) = MT_RAND_PHP; - break; - default: - BG(mt_rand_mode) = MT_RAND_MT19937; - } -} -/* }}} */ PHP_MINIT_FUNCTION(mt_rand) { REGISTER_LONG_CONSTANT("MT_RAND_MT19937", MT_RAND_MT19937, CONST_CS | CONST_PERSISTENT); diff --git a/ext/standard/php_math.h b/ext/standard/php_math..h index 91cd3e4..406fd49 100644 --- a/ext/standard/php_math.h +++ b/ext/standard/php_math.h @@ -51,7 +51,6 @@ PHP_FUNCTION(getrandmax); PHP_FUNCTION(mt_srand); PHP_FUNCTION(mt_rand); PHP_FUNCTION(mt_getrandmax); -PHP_FUNCTION(mt_rand_mode); PHP_FUNCTION(abs); PHP_FUNCTION(ceil); PHP_FUNCTION(floor); diff --git a/ext/standard/tests/math/mt_rand_value.phpt b/ext/standard/tests/math/mt_rand_value.phpt index c71b61e..cf7b9f0 100644 --- a/ext/standard/tests/math/mt_rand_value.phpt +++ b/ext/standard/tests/math/mt_rand_value.phpt @@ -3,8 +3,7 @@ Test mt_rand() output --FILE-- <?php -mt_rand_mode(MT_RAND_PHP); -mt_srand(12345678); +mt_srand(12345678, MT_RAND_PHP); for ($i=0; $i<16; $i++) { echo mt_rand().PHP_EOL; @@ -18,8 +17,7 @@ for ($i=0; $i<1024; $i++) { echo $x.PHP_EOL; echo PHP_EOL; -mt_rand_mode(MT_RAND_MT19937); -mt_srand(12345678); +mt_srand(12345678 /*, MT_RAND_MT19937 */); for ($i=0; $i<16; $i++) { echo mt_rand().PHP_EOL; diff --git a/ext/standard/tests/math/mt_srand_error.phpt b/ext/standard/tests/math/mt_srand_error.phpt index 537727c..aa2fc75 100644 --- a/ext/standard/tests/math/mt_srand_error.phpt +++ b/ext/standard/tests/math/mt_srand_error.phpt @@ -2,12 +2,12 @@ Test mt_srand() - wrong params test mt_srand() --FILE-- <?php -var_dump(mt_srand(500, true)); +var_dump(mt_srand(500, 0, true)); var_dump(mt_srand("fivehundred")); var_dump(mt_srand("500ABC")); ?> --EXPECTF-- -Warning: mt_srand() expects at most 1 parameter, 2 given in %s on line 2 +Warning: mt_srand() expects at most 2 parameters, 3 given in %s on line 2 NULL Warning: mt_srand() expects parameter 1 to be integer, string given in %s on line 3 diff --git a/ext/standard/tests/math/srand_error.phpt b/ext/standard/tests/math/srand_error.phpt index 6985af5..ca9e4b9 100644 --- a/ext/standard/tests/math/srand_error.phpt +++ b/ext/standard/tests/math/srand_error.phpt @@ -13,7 +13,7 @@ Test srand() function : error conditions - incorrect number of args echo "*** Testing srand() : error conditions ***\n"; -var_dump(srand(500, true)); +var_dump(srand(500, 0, true)); var_dump(srand("fivehundred")); var_dump(srand("500ABC")); ?> @@ -21,7 +21,7 @@ var_dump(srand("500ABC")); --EXPECTF-- *** Testing srand() : error conditions *** -Warning: srand() expects at most 1 parameter, 2 given in %s on line %d +Warning: srand() expects at most 2 parameters, 3 given in %s on line %d NULL Warning: srand() expects parameter 1 to be integer, string given in %s on line %d

« previous php.cvs (#93055) next »