STINNER Victor <[email protected]> added the comment:
I'm not sure that the pytime.c change in commit
a853a8ba7850381d49b284295dd6f0dc491dbe44 is correct:
diff --git a/Python/pytime.c b/Python/pytime.c
index 8979adc219..f3c913226c 100644
--- a/Python/pytime.c
+++ b/Python/pytime.c
@@ -276,7 +278,6 @@ static int
_PyTime_FromFloatObject(_PyTime_t *t, double value, _PyTime_round_t round,
long unit_to_ns)
{
- double err;
/* volatile avoids optimization changing how numbers are rounded */
volatile double d;
@@ -285,12 +286,11 @@ _PyTime_FromFloatObject(_PyTime_t *t, double value,
_PyTime_round_t round,
d *= (double)unit_to_ns;
d = _PyTime_Round(d, round);
- *t = (_PyTime_t)d;
- err = d - (double)*t;
- if (fabs(err) >= 1.0) {
+ if (!_Py_InIntegralTypeRange(_PyTime_t, d)) {
_PyTime_overflow();
return -1;
}
+ *t = (_PyTime_t)d;
return 0;
}
I don't think that modifying _Py_InIntegralTypeRange() macro to replace "<="
with "<" is correct, since this bug is very specific to pytime.c, when
_Py_InIntegralTypeRange() is used with a double. The PR proposes:
#define _Py_InIntegralTypeRange(type, v) (_Py_IntegralTypeMin(type) <= v && v <
_Py_IntegralTypeMax(type))
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue34423>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com