diff --git a/docs/changes.txt b/docs/changes.txt index f302ff6486..98bd418cc1 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -76,6 +76,7 @@ All (GUI): wxMSW: - Implemented wxComboBox::SetEditable(). +- wxSemaphore::Post() returns wxSEMA_OVERFLOW as documented (Christian Walther) - Fixed a bug whereby static controls didn't use the correct text colour if the parent's background colour had been set (most noticeable when switching to a high-contrast theme). diff --git a/src/msw/thread.cpp b/src/msw/thread.cpp index b48ed592cd..ee7fec670d 100644 --- a/src/msw/thread.cpp +++ b/src/msw/thread.cpp @@ -355,14 +355,22 @@ wxSemaError wxSemaphoreInternal::Post() { #if !defined(_WIN32_WCE) || (_WIN32_WCE >= 300) if ( !::ReleaseSemaphore(m_semaphore, 1, NULL /* ptr to previous count */) ) -#endif { - wxLogLastError(_T("ReleaseSemaphore")); - - return wxSEMA_MISC_ERROR; + if ( GetLastError() == ERROR_TOO_MANY_POSTS ) + { + return wxSEMA_OVERFLOW; + } + else + { + wxLogLastError(_T("ReleaseSemaphore")); + return wxSEMA_MISC_ERROR; + } } return wxSEMA_NO_ERROR; +#else + return wxSEMA_MISC_ERROR; +#endif } // ----------------------------------------------------------------------------