cvs: php4 /ext/standard array.c

From: Date: Thu, 15 Aug 2002 19:09:06 +0000
Subject: cvs: php4 /ext/standard array.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-13389@lists.php.net to get a copy of this message
kalowsky Thu Aug 15 15:09:06 2002 EDT Modified files: /php4/ext/standard array.c Log: Fix for bug #18401, makes shuffle() properly generate all possibilities. Patch provided by Adam Trachtenberg <adam@trachtenberg.com> Index: php4/ext/standard/array.c diff -u php4/ext/standard/array.c:1.181 php4/ext/standard/array.c:1.182 --- php4/ext/standard/array.c:1.181 Fri Aug 2 20:40:46 2002 +++ php4/ext/standard/array.c Thu Aug 15 15:09:05 2002 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.181 2002/08/03 00:40:46 rodif_bl Exp $ */ +/* $Id: array.c,v 1.182 2002/08/15 19:09:05 kalowsky Exp $ */ #include "php.h" #include "php_ini.h" @@ -1441,7 +1441,7 @@ { Bucket **elems, *temp; HashTable *hash; - int j, n_elems, cur_elem = 0, rnd_idx, n_left; + int j, n_elems, rnd_idx, n_left; n_elems = zend_hash_num_elements(Z_ARRVAL_P(array)); @@ -1457,13 +1457,12 @@ elems[j++] = temp; while (--n_left) { rnd_idx = php_rand(TSRMLS_C); - RAND_RANGE(rnd_idx, cur_elem, n_left, PHP_RAND_MAX); - if (rnd_idx != cur_elem) { - temp = elems[cur_elem]; - elems[cur_elem] = elems[rnd_idx]; + RAND_RANGE(rnd_idx, 0, n_left, PHP_RAND_MAX); + if (rnd_idx != n_left) { + temp = elems[n_left]; + elems[n_left] = elems[rnd_idx]; elems[rnd_idx] = temp; } - cur_elem++; } HANDLE_BLOCK_INTERRUPTIONS();

« previous php.cvs (#13389) next »