diff options
author | Tom Van Looy <tom@ctors.net> | 2017-12-03 22:35:50 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-12-09 17:24:17 +0100 |
commit | e4e26f24285511c5aa2a359ff7e93c1748fdda3b (patch) | |
tree | b3fa9519b3068603974c99a048d393e98009d2e3 /ext/standard/array.c | |
parent | 6d4de4cf0582cf33848826ab78aae58077dc2dea (diff) | |
download | php-git-e4e26f24285511c5aa2a359ff7e93c1748fdda3b.tar.gz |
Remove RAND_RANGE() macro
The behavior of RANGE_RANGE() is 7.1 changed completely, from
rescaling an already generated number to generating a number
itself. Because of this str_shuffle() ended up generating two
random numbers on every iteration.
To avoid further misuse the function is dropped entirely. Extensions
for PHP >= 7.1 should directly call php_mt_rand_range().
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r-- | ext/standard/array.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index dfeaef8747..05c89d901b 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2968,7 +2968,7 @@ static void php_array_data_shuffle(zval *array) /* {{{ */ } } while (--n_left) { - RAND_RANGE(rnd_idx, 0, n_left, PHP_RAND_MAX); + rnd_idx = php_mt_rand_range(0, n_left); if (rnd_idx != n_left) { temp = hash->arData[n_left]; hash->arData[n_left] = hash->arData[rnd_idx]; @@ -2993,7 +2993,7 @@ static void php_array_data_shuffle(zval *array) /* {{{ */ } } while (--n_left) { - RAND_RANGE(rnd_idx, 0, n_left, PHP_RAND_MAX); + rnd_idx = php_mt_rand_range(0, n_left); if (rnd_idx != n_left) { temp = hash->arData[n_left]; hash->arData[n_left] = hash->arData[rnd_idx]; |