sniper          Sun Aug 10 20:42:29 2003 EDT

  Modified files:              
    /php-src/ext/standard       php_rand.h rand.c 
  Log:
  - Fixed bug #25007 (rand() & mt_rand() seed RNG every call).
  # Also cleaned up the code a bit with this fix.
  
  
Index: php-src/ext/standard/php_rand.h
diff -u php-src/ext/standard/php_rand.h:1.22 php-src/ext/standard/php_rand.h:1.23
--- php-src/ext/standard/php_rand.h:1.22        Fri Aug  8 09:34:38 2003
+++ php-src/ext/standard/php_rand.h     Sun Aug 10 20:42:29 2003
@@ -20,7 +20,7 @@
    | Based on code from: Shawn Cokus <[EMAIL PROTECTED]>          |
    +----------------------------------------------------------------------+
  */
-/* $Id: php_rand.h,v 1.22 2003/08/08 13:34:38 iliaa Exp $ */
+/* $Id: php_rand.h,v 1.23 2003/08/11 00:42:29 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);
Index: php-src/ext/standard/rand.c
diff -u php-src/ext/standard/rand.c:1.63 php-src/ext/standard/rand.c:1.64
--- php-src/ext/standard/rand.c:1.63    Tue Jun 10 16:03:38 2003
+++ php-src/ext/standard/rand.c Sun Aug 10 20:42:29 2003
@@ -20,7 +20,7 @@
    | Based on code from: Shawn Cokus <[EMAIL PROTECTED]>          |
    +----------------------------------------------------------------------+
  */
-/* $Id: rand.c,v 1.63 2003/06/10 20:03:38 imajes Exp $ */
+/* $Id: rand.c,v 1.64 2003/08/11 00:42:29 sniper Exp $ */
 
 #include <stdlib.h>
 
@@ -53,6 +53,9 @@
        srand((unsigned int) seed);
 # endif
 #endif
+
+       /* Seed only once */
+       BG(rand_is_seeded) = 1;
 }
 /* }}} */
 
@@ -198,6 +201,9 @@
        
        for (BG(left) = 0, *s++ = x, j = N; --j;
                *s++ = (x *= 69069U) & 0xFFFFFFFFU);
+
+       /* Seed only once */
+       BG(mt_rand_is_seeded) = 1;
 }
 /* }}} */
 
@@ -246,12 +252,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)
@@ -265,7 +265,6 @@
                seed = GENERATE_SEED();
 
        php_srand(seed TSRMLS_CC);
-       BG(rand_is_seeded) = 1;
 }
 /* }}} */
 
@@ -282,7 +281,6 @@
                seed = GENERATE_SEED();
 
        php_mt_srand(seed TSRMLS_CC);
-       BG(mt_rand_is_seeded) = 1;
 }
 /* }}} */
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to