From 0e926ee25847bd0a6e1d8ae1ff0006dfabb20269 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 13 Feb 2019 18:53:55 +0000 Subject: [PATCH] Fix broken timeout calculation causing intermittent CI failures * It turns out that min(0, x) is 0, and not a great way to prevent underflow! --- renderdoc/os/posix/posix_network.cpp | 5 ++++- renderdoc/os/win32/win32_network.cpp | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/renderdoc/os/posix/posix_network.cpp b/renderdoc/os/posix/posix_network.cpp index 7f195e487..b69c43693 100644 --- a/renderdoc/os/posix/posix_network.cpp +++ b/renderdoc/os/posix/posix_network.cpp @@ -129,7 +129,10 @@ Socket *Socket::AcceptClient(uint32_t timeoutMilliseconds) Threading::Sleep(sleeptime); - timeoutMilliseconds = RDCMIN(0U, timeoutMilliseconds - sleeptime); + if(sleeptime < timeoutMilliseconds) + timeoutMilliseconds -= sleeptime; + else + timeoutMilliseconds = 0U; } while(timeoutMilliseconds); return NULL; diff --git a/renderdoc/os/win32/win32_network.cpp b/renderdoc/os/win32/win32_network.cpp index 28ddd0b86..05713870d 100644 --- a/renderdoc/os/win32/win32_network.cpp +++ b/renderdoc/os/win32/win32_network.cpp @@ -144,7 +144,10 @@ Socket *Socket::AcceptClient(uint32_t timeoutMilliseconds) Threading::Sleep(sleeptime); - timeoutMilliseconds = RDCMIN(0U, timeoutMilliseconds - sleeptime); + if(sleeptime < timeoutMilliseconds) + timeoutMilliseconds -= sleeptime; + else + timeoutMilliseconds = 0U; } while(timeoutMilliseconds); return NULL;