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