X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/609aa390f4b788ba94622e78464837a1838c5463..f9cff6e17341ea95da89eaa27f78b32f11291e12:/src/common/socket.cpp diff --git a/src/common/socket.cpp b/src/common/socket.cpp index 71cfcc6cce..032b8f094e 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -213,7 +213,11 @@ public: { m_socket->m_reading = false; - m_socket->m_impl->ReenableEvents(wxSOCKET_INPUT_FLAG); + // connection could have been lost while reading, in this case calling + // ReenableEvents() would assert and is not necessary anyhow + wxSocketImpl * const impl = m_socket->m_impl; + if ( impl && impl->m_fd != INVALID_SOCKET ) + impl->ReenableEvents(wxSOCKET_INPUT_FLAG); } private: @@ -231,13 +235,15 @@ public: wxASSERT_MSG( !m_socket->m_writing, "write reentrancy?" ); m_socket->m_writing = true; - - m_socket->m_impl->ReenableEvents(wxSOCKET_OUTPUT_FLAG); } ~wxSocketWriteGuard() { m_socket->m_writing = false; + + wxSocketImpl * const impl = m_socket->m_impl; + if ( impl && impl->m_fd != INVALID_SOCKET ) + impl->ReenableEvents(wxSOCKET_OUTPUT_FLAG); } private: @@ -1620,7 +1626,9 @@ void wxSocketBase::OnRequest(wxSocketNotify notification) case wxSOCKET_LOST: flag = wxSOCKET_LOST_FLAG; - // if we lost the connection the socket is now closed + // if we lost the connection the socket is now closed and not + // connected any more + m_connected = false; m_closed = true; break;