corrected handling of timeouts in wxConditionInternal::WaitTimeout(): check for wxSEMA_TIMEOUT, not wxSEMA_BUSY; return wxCOND_TIMEOUT, not wxCOND_MISC_ERROR (bug 1387179)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2005-12-23 01:20:38 +00:00
parent 98cb8dcb0c
commit dfc69c6d5b

View File

@@ -148,7 +148,7 @@ wxCondError wxConditionInternal::WaitTimeout(unsigned long milliseconds)
wxSemaError err = m_semaphore.WaitTimeout(milliseconds); wxSemaError err = m_semaphore.WaitTimeout(milliseconds);
if ( err == wxSEMA_BUSY ) if ( err == wxSEMA_TIMEOUT )
{ {
// another potential race condition exists here it is caused when a // another potential race condition exists here it is caused when a
// 'waiting' thread timesout, and returns from WaitForSingleObject, but // 'waiting' thread timesout, and returns from WaitForSingleObject, but
@@ -174,7 +174,9 @@ wxCondError wxConditionInternal::WaitTimeout(unsigned long milliseconds)
m_mutex.Lock(); m_mutex.Lock();
return err == wxSEMA_NO_ERROR ? wxCOND_NO_ERROR : wxCOND_MISC_ERROR; return err == wxSEMA_NO_ERROR ? wxCOND_NO_ERROR
: err == wxSEMA_TIMEOUT ? wxCOND_TIMEOUT
: wxCOND_MISC_ERROR;
} }
wxCondError wxConditionInternal::Signal() wxCondError wxConditionInternal::Signal()