#include "wx/apptrait.h"
#include "wx/thread.h"
#include "wx/dynlib.h"
+#include "wx/link.h"
#ifdef __WXWINCE__
/*
// dependencies on it for all the application using wx even if they don't use
// sockets
#ifdef __WXWINCE__
- #define WINSOCK_DLL_NAME _T("ws2.dll")
+ #define WINSOCK_DLL_NAME wxT("ws2.dll")
#else
- #define WINSOCK_DLL_NAME _T("wsock32.dll")
+ #define WINSOCK_DLL_NAME wxT("wsock32.dll")
#endif
gs_wsock32dll.Load(WINSOCK_DLL_NAME, wxDL_VERBATIM | wxDL_QUIET);
if ( !socket )
return 0;
+ // the socket may be already closed but we could still receive
+ // notifications for it sent (asynchronously) before it got closed
+ if ( socket->m_fd == INVALID_SOCKET )
+ return 0;
+
wxASSERT_MSG( socket->m_fd == (SOCKET)wParam,
"mismatch between message and socket?" );
}
} gs_managerSetter;
+// see the relative linker macro in socket.cpp
+wxFORCE_LINK_THIS_MODULE( mswsocket );
+
// ============================================================================
// wxSocketImpl implementation
// ============================================================================
-/* static */
-wxSocketImpl *wxSocketImpl::Create(wxSocketBase& wxsocket)
-{
- return new wxSocketImplMSW(wxsocket);
-}
-
void wxSocketImplMSW::DoClose()
{
wxSocketManager::Get()->Uninstall_Callback(this);