mirror of https://github.com/python/cpython
gh-112804: Clamping timeout value for _PySemaphore_PlatformWait (gh-124914)
* gh-112804: Clamping timeout value for _PySemaphore_PlatformWait * Address code review * nit
This commit is contained in:
parent
adfe7657a3
commit
a5fc50994a
|
@ -102,7 +102,14 @@ _PySemaphore_PlatformWait(_PySemaphore *sema, PyTime_t timeout)
|
||||||
millis = INFINITE;
|
millis = INFINITE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
millis = (DWORD) (timeout / 1000000);
|
PyTime_t div = _PyTime_AsMilliseconds(timeout, _PyTime_ROUND_TIMEOUT);
|
||||||
|
// Prevent overflow with clamping the result
|
||||||
|
if ((PyTime_t)PY_DWORD_MAX < div) {
|
||||||
|
millis = PY_DWORD_MAX;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
millis = (DWORD) div;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
wait = WaitForSingleObjectEx(sema->platform_sem, millis, FALSE);
|
wait = WaitForSingleObjectEx(sema->platform_sem, millis, FALSE);
|
||||||
if (wait == WAIT_OBJECT_0) {
|
if (wait == WAIT_OBJECT_0) {
|
||||||
|
|
Loading…
Reference in New Issue