bpo-41710: Add _PyTime_AsTimespec_clamp() by vstinner · Pull Request #28629 · python/cpython

@vstinner vstinner changed the title bpo-41710: Add _PyTime_AsTimespec_truncate() bpo-41710: Add _PyTime_AsTimespec_clamp()

Sep 29, 2021

@vstinner

Add the _PyTime_AsTimespec_clamp() function: similar to
_PyTime_AsTimespec(), but clamp to _PyTime_t min/max and don't raise
an exception.

PyThread_acquire_lock_timed() now uses _PyTime_AsTimespec_clamp() to
remove the Py_UNREACHABLE() code path.

* Add _PyTime_AsTime_t() function.
* Add PY_TIME_T_MIN and PY_TIME_T_MAX constants.
* Replace _PyTime_AsTimeval_noraise() with _PyTime_AsTimeval_clamp().
* Add pytime_divide_round_up() function.
* Fix integer overflow in pytime_divide().
* Add pytime_divmod() function.