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

Reply via email to