◐ Shell
clean mode source ↗

Message 213756 - Python tracker

Hi,

> pytime.c:184: runtime error: value -1e+200 is outside the range of representable values of type 'long'

How did you get this warning?

> Shouldn't a range test based on TIME_T_MAX with an epsilon occur first?

Two lines after, the integer overflow is checked:

        *sec = (time_t)intpart;
        err = intpart - (double)*sec;
        if (err <= -1.0 || err >= 1.0) {
            error_time_t_overflow();
            return -1;
        }

And it works, example:

>>> import _testcapi
>>> _testcapi.pytime_object_to_time_t(-1e+200, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: timestamp out of range for platform time_t

(where 0 means _PyTime_ROUND_DOWN)