diff options
author | Sara Golemon <pollita@php.net> | 2003-04-03 18:33:05 +0000 |
---|---|---|
committer | Sara Golemon <pollita@php.net> | 2003-04-03 18:33:05 +0000 |
commit | 465bb61357bca0b0014960d178024b4f5a1d8d8b (patch) | |
tree | b813d11b70742703c709b18e2373edcb211cfe5b /ext/standard/array.c | |
parent | 7e2fcf986ee00e22e939d080a068795b25ce5db8 (diff) | |
download | php-git-465bb61357bca0b0014960d178024b4f5a1d8d8b.tar.gz |
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);
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r-- | ext/standard/array.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index 58b5349bab..32a0edde6e 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 { |