sniper Sun Aug 10 20:43:32 2003 EDT
Modified files: (Branch: PHP_4_3)
/php-src NEWS
/php-src/ext/standard rand.c php_rand.h
Log:
MFH: - Fixed bug #25007 (rand() & mt_rand() seed RNG every call).
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.336 php-src/NEWS:1.1247.2.337
--- php-src/NEWS:1.1247.2.336 Sat Aug 9 16:50:25 2003
+++ php-src/NEWS Sun Aug 10 20:43:32 2003
@@ -1,6 +1,7 @@
PHP 4 NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? Aug 2003, Version 4.3.3RC4
+- Fixed bug #25007 (rand() & mt_rand() seed RNG every call). (Jani)
- Fixed bug #24989 (external libexpat conflicts with bundled libexpat). (Jani)
- Fixed bug #24980 (array_reduce() uses first element as default running
total). (Ilia)
Index: php-src/ext/standard/rand.c
diff -u php-src/ext/standard/rand.c:1.60.2.1 php-src/ext/standard/rand.c:1.60.2.2
--- php-src/ext/standard/rand.c:1.60.2.1 Tue Dec 31 11:35:34 2002
+++ php-src/ext/standard/rand.c Sun Aug 10 20:43:32 2003
@@ -20,7 +20,7 @@
| Based on code from: Shawn Cokus <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: rand.c,v 1.60.2.1 2002/12/31 16:35:34 sebastian Exp $ */
+/* $Id: rand.c,v 1.60.2.2 2003/08/11 00:43:32 sniper Exp $ */
#include <stdlib.h>
@@ -60,6 +60,9 @@
srand((unsigned int) seed);
# endif
#endif
+
+ /* Seed only once */
+ BG(rand_is_seeded) = 1;
}
/* }}} */
@@ -205,6 +208,9 @@
for (BG(left) = 0, *s++ = x, j = N; --j;
*s++ = (x *= 69069U) & 0xFFFFFFFFU);
+
+ /* Seed only once */
+ BG(mt_rand_is_seeded) = 1;
}
/* }}} */
@@ -253,12 +259,6 @@
}
/* }}} */
-#ifdef PHP_WIN32
-#define GENERATE_SEED() ((long) (time(0) * GetCurrentProcessId() * 1000000 *
php_combined_lcg(TSRMLS_C)))
-#else
-#define GENERATE_SEED() ((long) (time(0) * getpid() * 1000000 *
php_combined_lcg(TSRMLS_C)))
-#endif
-
/* {{{ proto void srand([int seed])
Seeds random number generator */
PHP_FUNCTION(srand)
@@ -272,7 +272,6 @@
seed = GENERATE_SEED();
php_srand(seed TSRMLS_CC);
- BG(rand_is_seeded) = 1;
}
/* }}} */
@@ -289,7 +288,6 @@
seed = GENERATE_SEED();
php_mt_srand(seed TSRMLS_CC);
- BG(mt_rand_is_seeded) = 1;
}
/* }}} */
Index: php-src/ext/standard/php_rand.h
diff -u php-src/ext/standard/php_rand.h:1.19.4.2
php-src/ext/standard/php_rand.h:1.19.4.3
--- php-src/ext/standard/php_rand.h:1.19.4.2 Fri Aug 8 09:34:52 2003
+++ php-src/ext/standard/php_rand.h Sun Aug 10 20:43:32 2003
@@ -20,7 +20,7 @@
| Based on code from: Shawn Cokus <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_rand.h,v 1.19.4.2 2003/08/08 13:34:52 iliaa Exp $ */
+/* $Id: php_rand.h,v 1.19.4.3 2003/08/11 00:43:32 sniper Exp $ */
#ifndef PHP_RAND_H
#define PHP_RAND_H
@@ -44,6 +44,12 @@
/* MT Rand */
#define PHP_MT_RAND_MAX ((long) (0x7FFFFFFF)) /* (1<<31) - 1 */
+
+#ifdef PHP_WIN32
+#define GENERATE_SEED() ((long) (time(0) * GetCurrentProcessId() * 1000000 *
php_combined_lcg(TSRMLS_C)))
+#else
+#define GENERATE_SEED() ((long) (time(0) * getpid() * 1000000 *
php_combined_lcg(TSRMLS_C)))
+#endif
PHPAPI void php_srand(long seed TSRMLS_DC);
PHPAPI long php_rand(TSRMLS_D);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php