diff options
Diffstat (limited to 'include/systools/win32/retry_if_failed.hxx')
-rw-r--r-- | include/systools/win32/retry_if_failed.hxx | 12 |
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; } } |