Browse Source

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);

migration/unlabaled-1.3.2
Sara Golemon 24 years ago
parent
commit
465bb61357
  1. 6
      ext/standard/array.c

6
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 {

Loading…
Cancel
Save