From 54e757fc96db59e27c006052a665a9f7cff6b53f Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Mon, 12 Jan 2009 23:14:17 +0000 Subject: [PATCH] ensure correct linking of the socket manager initializer for static builds of wxWidgets git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58059 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/socket.cpp | 9 ++++++++- src/common/socketiohandler.cpp | 5 +++++ src/unix/sockunix.cpp | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/common/socket.cpp b/src/common/socket.cpp index 3d5338425b..ede71ebcf1 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -42,6 +42,7 @@ #include "wx/stopwatch.h" #include "wx/thread.h" #include "wx/evtloop.h" +#include "wx/link.h" #include "wx/private/fd.h" #include "wx/private/socket.h" @@ -769,7 +770,8 @@ void wxSocketBase::Init() { // this Initialize() will be undone by wxSocketModule::OnExit(), all // the other calls to it should be matched by a call to Shutdown() - Initialize(); + if (!Initialize()) + wxLogError("Cannot initialize wxSocketBase"); } } @@ -1988,4 +1990,9 @@ private: IMPLEMENT_DYNAMIC_CLASS(wxSocketModule, wxModule) +// NOTE: we need to force linking against socketiohandler.cpp otherwise in +// static builds of wxWidgets the ManagerSetter::ManagerSetter ctor +// contained there wouldn't be ever called +wxFORCE_LINK_MODULE( socketiohandler ) + #endif // wxUSE_SOCKETS diff --git a/src/common/socketiohandler.cpp b/src/common/socketiohandler.cpp index 89f8edafee..080532be0f 100644 --- a/src/common/socketiohandler.cpp +++ b/src/common/socketiohandler.cpp @@ -24,6 +24,7 @@ #include "wx/apptrait.h" #include "wx/private/socket.h" +#include "wx/link.h" // ============================================================================ // implementation @@ -111,4 +112,8 @@ static struct ManagerSetter } } gs_managerSetter; + +// see the relative linker macro in socket.cpp +wxFORCE_LINK_THIS_MODULE( socketiohandler ); + #endif // wxUSE_SOCKETS diff --git a/src/unix/sockunix.cpp b/src/unix/sockunix.cpp index c50debc326..51a158cab6 100644 --- a/src/unix/sockunix.cpp +++ b/src/unix/sockunix.cpp @@ -107,6 +107,9 @@ wxSocketError wxSocketImplUnix::GetLastError() const void wxSocketImplUnix::DoEnableEvents(int flags, bool enable) { wxSocketManager * const manager = wxSocketManager::Get(); + if (!manager) + return; + if ( enable ) { if ( flags & wxSOCKET_INPUT_FLAG ) -- 2.47.2