pollita         Thu Apr  3 13:33:05 2003 EDT

  Modified files:              
    /php4/ext/standard  array.c 
  Log:
  Kludgy fix for floating point drift causing problems like range(1.0,1.5,0.1) == 
array(1.0,1.1,1.2,1.3,1.4);
  
Index: php4/ext/standard/array.c
diff -u php4/ext/standard/array.c:1.224 php4/ext/standard/array.c:1.225
--- php4/ext/standard/array.c:1.224     Tue Apr  1 16:47:21 2003
+++ php4/ext/standard/array.c   Thu Apr  3 13:33:05 2003
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: array.c,v 1.224 2003/04/01 21:47:21 rasmus Exp $ */
+/* $Id: array.c,v 1.225 2003/04/03 18:33:05 pollita Exp $ */
 
 #include "php.h"
 #include "php_ini.h"
@@ -81,6 +81,8 @@
 #define INTERSECT_NORMAL               0
 #define INTERSECT_ASSOC                        1
 
+#define DOUBLE_DRIFT_FIX       0.000000000000001
+
 PHP_MINIT_FUNCTION(array)
 {
 #ifdef ZTS
@@ -1543,7 +1545,7 @@
                                err = 1;
                                goto err;
                        }
-                       for (; low >= high; low -= step) {
+                       for (; low >= (high - DOUBLE_DRIFT_FIX); low -= step) {
                                add_next_index_double(return_value, low);
                        }       
                } else if (high > low) {        /* Positive steps */
@@ -1551,7 +1553,7 @@
                                err = 1;
                                goto err;
                        }
-                       for (; low <= high; low += step) {
+                       for (; low <= (high + DOUBLE_DRIFT_FIX); low += step) {
                                add_next_index_double(return_value, low);
                        }       
                } else {



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

Reply via email to