summaryrefslogtreecommitdiff
path: root/include/systools/win32/retry_if_failed.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'include/systools/win32/retry_if_failed.hxx')
-rw-r--r--include/systools/win32/retry_if_failed.hxx12
1 files changed, 4 insertions, 8 deletions
diff --git a/include/systools/win32/retry_if_failed.hxx b/include/systools/win32/retry_if_failed.hxx
index 11a7e5372037..d3dd6b125be9 100644
--- a/include/systools/win32/retry_if_failed.hxx
+++ b/include/systools/win32/retry_if_failed.hxx
@@ -24,16 +24,12 @@ namespace sal::systools
// HRESULT hr = sal::systools::RetryIfFailed(10, 100, []{ return OleFlushClipboard(); });
template <typename Func> HRESULT RetryIfFailed(unsigned times, unsigned msTimeout, Func func)
{
- HRESULT hr = E_FAIL;
- for (unsigned i = 0; i < times; ++i)
+ for (unsigned i = 0;; ++i)
{
- hr = func();
- if (SUCCEEDED(hr))
- break;
- if (i < times - 1)
- Sleep(msTimeout);
+ if (HRESULT hr = func(); SUCCEEDED(hr) || i >= times)
+ return hr;
+ Sleep(msTimeout);
}
- return hr;
}
}