From 465bb61357bca0b0014960d178024b4f5a1d8d8b Mon Sep 17 00:00:00 2001 From: Sara Golemon Date: Thu, 3 Apr 2003 18:33:05 +0000 Subject: [PATCH] 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); --- ext/standard/array.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ext/standard/array.c b/ext/standard/array.c index 58b5349bab8..32a0edde6e2 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -81,6 +81,8 @@ php_array_globals array_globals; #define INTERSECT_NORMAL 0 #define INTERSECT_ASSOC 1 +#define DOUBLE_DRIFT_FIX 0.000000000000001 + PHP_MINIT_FUNCTION(array) { #ifdef ZTS @@ -1543,7 +1545,7 @@ double_str: 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 @@ double_str: 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 {