From f46a01651ac91690b47f9606ae53530fbf73829f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 3 Jul 2009 14:28:02 +0000 Subject: [PATCH] don't call wxSocketImpl::ReenableEvents() if the socket was closed while reading/writing to avoid an assert in it git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61311 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/socket.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/common/socket.cpp b/src/common/socket.cpp index 71cfcc6cce..3a9de3950c 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: -- 2.47.2