]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/sockmsw.cpp
Add support for IEC and SI size units to wxFileName::GetHumanReadableSize().
[wxWidgets.git] / src / msw / sockmsw.cpp
index ebabf7d085851d2cc99b3e4fd69e1f7f964d4860..1561c69f8f131ebed414c6629b1720344e82e5f5 100644 (file)
@@ -33,6 +33,7 @@
 #include "wx/apptrait.h"
 #include "wx/thread.h"
 #include "wx/dynlib.h"
+#include "wx/link.h"
 
 #ifdef __WXWINCE__
 /*
@@ -211,9 +212,9 @@ bool wxSocketMSWManager::OnInit()
   // 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);
@@ -327,6 +328,11 @@ LRESULT CALLBACK wxSocket_Internal_WinProc(HWND hWnd,
         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?" );
 
@@ -432,16 +438,13 @@ static struct ManagerSetter
     }
 } 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);