mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue #22117: Add a new _PyTime_FromSeconds() function
Fix also _Py_InitializeEx_Private(): initialize time before initializing import, import_init() uses the _PyTime API (for thread locks).
This commit is contained in:
parent
21dfffa218
commit
13019fdef3
6 changed files with 45 additions and 5 deletions
|
@ -158,6 +158,19 @@ _PyTime_overflow(void)
|
|||
"timestamp too large to convert to C _PyTime_t");
|
||||
}
|
||||
|
||||
_PyTime_t
|
||||
_PyTime_FromSeconds(int seconds)
|
||||
{
|
||||
_PyTime_t t;
|
||||
/* ensure that integer overflow cannot happen, int type should have 32
|
||||
bits, whereas _PyTime_t type has at least 64 bits (SEC_TO_MS takes 30
|
||||
bits). */
|
||||
assert((seconds >= 0 && seconds <= _PyTime_MAX / SEC_TO_NS)
|
||||
|| (seconds < 0 && seconds >= _PyTime_MIN / SEC_TO_NS));
|
||||
t = (_PyTime_t)seconds * SEC_TO_NS;
|
||||
return t;
|
||||
}
|
||||
|
||||
_PyTime_t
|
||||
_PyTime_FromNanoseconds(PY_LONG_LONG ns)
|
||||
{
|
||||
|
@ -657,5 +670,9 @@ _PyTime_Init(void)
|
|||
/* ensure that the operating system provides a monotonic clock */
|
||||
if (_PyTime_GetMonotonicClockWithInfo(&t, NULL) < 0)
|
||||
return -1;
|
||||
|
||||
/* check that _PyTime_FromSeconds() cannot overflow */
|
||||
assert(INT_MAX <= _PyTime_MAX / SEC_TO_NS);
|
||||
assert(INT_MIN >= _PyTime_MIN / SEC_TO_NS);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue