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: | Leigh | 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