X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/670f9935630beb2123a5ca62894ae92a3f0efa4f..ce7208d49d5ce2ca1dc0b3b83f14f1d04f29c4bf:/src/msw/thread.cpp?ds=sidebyside diff --git a/src/msw/thread.cpp b/src/msw/thread.cpp index 9377f181ab..ee7fec670d 100644 --- a/src/msw/thread.cpp +++ b/src/msw/thread.cpp @@ -26,19 +26,19 @@ #include "wx/thread.h" #ifndef WX_PRECOMP + #include "wx/msw/missing.h" #include "wx/intl.h" #include "wx/app.h" + #include "wx/module.h" #endif #include "wx/apptrait.h" #include "wx/scopeguard.h" #include "wx/msw/private.h" -#include "wx/msw/missing.h" #include "wx/msw/seh.h" #include "wx/except.h" -#include "wx/module.h" // must have this symbol defined to get _beginthread/_endthread declarations #ifndef _MT @@ -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 } // ----------------------------------------------------------------------------