This prevents sign extending it when promoting it to ULONGLONG. This fixes high CPU usage in Wargaming Game Center that was caused by _Cnd_timedwait instantly returning timeout instead of waiting for the requested 30 days.
Signed-off-by: Stefan Dösinger stefan@codeweavers.com --- dlls/msvcp90/misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/msvcp90/misc.c b/dlls/msvcp90/misc.c index 901930ba96..162c9dfc85 100644 --- a/dlls/msvcp90/misc.c +++ b/dlls/msvcp90/misc.c @@ -635,7 +635,7 @@ int __cdecl _Cnd_timedwait(_Cnd_arg_t cnd, _Mtx_arg_t mtx, const xtime *xt) InterlockedExchangeAdd( (LONG *)&cv->Ptr, 1 ); _Mtx_unlock(mtx);
- timeout.QuadPart = (ULONGLONG)_Xtime_diff_to_millis(xt) * -10000; + timeout.QuadPart = (ULONGLONG)((ULONG)_Xtime_diff_to_millis(xt)) * -10000; status = NtWaitForKeyedEvent(keyed_event, &cv->Ptr, FALSE, &timeout); if (status) {