]> git.saurik.com Git - wxWidgets.git/commitdiff
* Fixed some "memory leak"
authorGuilhem Lavaux <lavaux@easynet.fr>
Sat, 28 Nov 1998 18:36:47 +0000 (18:36 +0000)
committerGuilhem Lavaux <lavaux@easynet.fr>
Sat, 28 Nov 1998 18:36:47 +0000 (18:36 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1077 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/socket.h
include/wx/url.h
src/common/protocol.cpp
src/common/socket.cpp
src/common/url.cpp

index 7837b73813c4938d3f07dbdcfee27334750fea7b..c9e161331c3481eba4d18d26d6df57be28056554 100644 (file)
@@ -270,7 +270,6 @@ class WXDLLEXPORT wxSocketHandler : public wxObject
 {
   DECLARE_CLASS(wxSocketHandler)
 protected:
 {
   DECLARE_CLASS(wxSocketHandler)
 protected:
-  static wxSocketHandler *master;
 #if defined(__WINDOWS__)
   wxList *smsg_list;
   struct wxSockHandlerInternal *internal;
 #if defined(__WINDOWS__)
   wxList *smsg_list;
   struct wxSockHandlerInternal *internal;
@@ -280,6 +279,7 @@ protected:
 public:
   enum SockStatus { SOCK_NONE, SOCK_DATA, SOCK_CONNECT, SOCK_DISCONNECT,
                    SOCK_ERROR };
 public:
   enum SockStatus { SOCK_NONE, SOCK_DATA, SOCK_CONNECT, SOCK_DISCONNECT,
                    SOCK_ERROR };
+  static wxSocketHandler *master;
 
   wxSocketHandler();
   virtual ~wxSocketHandler();
 
   wxSocketHandler();
   virtual ~wxSocketHandler();
@@ -303,8 +303,7 @@ public:
                        (wxSocketBase::wxSockFlags flags = wxSocketBase::NONE);
 
   // Create or reuse a socket handler
                        (wxSocketBase::wxSockFlags flags = wxSocketBase::NONE);
 
   // Create or reuse a socket handler
-  static wxSocketHandler& Master()
-  { return *((master) ? (master) : (master = new wxSocketHandler())); }
+  static wxSocketHandler& Master() { return *master; }
 
 #if defined(WXSOCK_INTERNAL) && defined(__WINDOWS__)
 
 
 #if defined(WXSOCK_INTERNAL) && defined(__WINDOWS__)
 
index 22741e9295804a5ed8b3b03a383dd89000ae23f5..f37d4a9d9097a2a246b28a16ec80d75b2f217ded 100644 (file)
@@ -36,7 +36,7 @@ class WXDLLEXPORT wxURL : public wxObject {
   DECLARE_DYNAMIC_CLASS(wxURL)
 protected:
   static wxProtoInfo *g_protocols;
   DECLARE_DYNAMIC_CLASS(wxURL)
 protected:
   static wxProtoInfo *g_protocols;
-  static wxHTTP g_proxy;
+  static wxHTTP *g_proxy;
   wxProtoInfo *m_protoinfo;
   wxProtocol *m_protocol;
   wxHTTP m_proxy;
   wxProtoInfo *m_protoinfo;
   wxProtocol *m_protocol;
   wxHTTP m_proxy;
@@ -52,6 +52,7 @@ protected:
   bool FetchProtocol();
 
   friend class wxProtoInfo;
   bool FetchProtocol();
 
   friend class wxProtoInfo;
+  friend class wxProtocolModule;
 public:
 
   wxURL(const wxString& url);
 public:
 
   wxURL(const wxString& url);
index b9cbcb8634ec949bed83a6f155a54a10f2c340eb..d0da8f24265773886a23ce363f6e15199a63ab4e 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "wx/protocol/protocol.h"
 #include "wx/url.h"
 
 #include "wx/protocol/protocol.h"
 #include "wx/url.h"
+#include "wx/module.h"
 
 /////////////////////////////////////////////////////////////////
 // wxProtoInfo
 
 /////////////////////////////////////////////////////////////////
 // wxProtoInfo
@@ -108,3 +109,31 @@ wxProtocolError GetLine(wxSocketBase *sock, wxString& result) {
   return wxPROTO_NOERR;
 #undef PROTO_BSIZE
 }
   return wxPROTO_NOERR;
 #undef PROTO_BSIZE
 }
+
+// ----------------------------------------------------------------------
+// Module
+// ----------------------------------------------------------------------
+
+class wxProtocolModule: public wxModule {
+  DECLARE_DYNAMIC_CLASS(wxProtocolModule)
+public:
+  wxProtocolModule() {}
+  bool OnInit();
+  void OnExit();
+};
+
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxProtocolModule, wxModule)
+#endif
+
+bool wxProtocolModule::OnInit()
+{
+  wxURL::g_proxy = new wxHTTP();
+  return TRUE;
+}
+
+void wxProtocolModule::OnExit()
+{
+  delete wxURL::g_proxy;
+  wxURL::g_proxy = NULL;
+}
index d6919eb2f02b5c17cbcc1a096fdd74c5c852ba4a..06d558dafe222eb08138650cf28283354ebaf854 100644 (file)
@@ -89,6 +89,7 @@
 /////////////////////////////////////////////////////////////////////////////
 // wxSocket headers
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 // wxSocket headers
 /////////////////////////////////////////////////////////////////////////////
+#include "wx/module.h"
 #define WXSOCK_INTERNAL
 #include "wx/sckaddr.h"
 #include "wx/socket.h"
 #define WXSOCK_INTERNAL
 #include "wx/sckaddr.h"
 #include "wx/socket.h"
@@ -153,6 +154,17 @@ int PASCAL FAR __WSAFDIsSet(SOCKET fd, fd_set FAR *set)
 // Some patch ///// END
 /////////////////////////////////////////////////////////////////////////////
 
 // Some patch ///// END
 /////////////////////////////////////////////////////////////////////////////
 
+// --------------------------------------------------------------
+// Module
+// --------------------------------------------------------------
+class wxSocketModule: public wxModule {
+  DECLARE_DYNAMIC_CLASS(wxSocketModule)
+public:
+  wxSocketModule() {}
+  bool OnInit();
+  void OnExit();
+};
+
 // --------------------------------------------------------------
 // ClassInfos
 // --------------------------------------------------------------
 // --------------------------------------------------------------
 // ClassInfos
 // --------------------------------------------------------------
@@ -162,6 +174,7 @@ IMPLEMENT_CLASS(wxSocketServer, wxSocketBase)
 IMPLEMENT_CLASS(wxSocketClient, wxSocketBase)
 IMPLEMENT_CLASS(wxSocketHandler, wxObject)
 IMPLEMENT_DYNAMIC_CLASS(wxSocketEvent, wxEvent)
 IMPLEMENT_CLASS(wxSocketClient, wxSocketBase)
 IMPLEMENT_CLASS(wxSocketHandler, wxObject)
 IMPLEMENT_DYNAMIC_CLASS(wxSocketEvent, wxEvent)
+IMPLEMENT_DYNAMIC_CLASS(wxSocketModule, wxModule)
 #endif
 
 class wxSockWakeUp : public wxTimer {
 #endif
 
 class wxSockWakeUp : public wxTimer {
@@ -1543,5 +1556,15 @@ HWND wxSocketHandler::GetHWND() const
 
 #endif
 
 
 #endif
 
+bool wxSocketModule::OnInit() {
+  wxSocketHandler::master = new wxSocketHandler();
+  return TRUE;
+}
+
+void wxSocketModule::OnExit() {
+  delete wxSocketHandler::master;
+  wxSocketHandler::master = NULL;
+}
+
 #endif
   // __WXSTUBS__
 #endif
   // __WXSTUBS__
index 0489da90d90d7942af73d1037c82812064bbd102..46e26db8ceaed0aa199d91a865cdeeb830099b18 100644 (file)
@@ -41,7 +41,7 @@ IMPLEMENT_CLASS(wxURL, wxObject)
 
 // Protocols list
 wxProtoInfo *wxURL::g_protocols = NULL;
 
 // Protocols list
 wxProtoInfo *wxURL::g_protocols = NULL;
-wxHTTP wxURL::g_proxy;
+wxHTTP *wxURL::g_proxy;
 
 /////////////////////////////////////////////////////////////////
 // wxURL ////////////////////////////////////////////////////////
 
 /////////////////////////////////////////////////////////////////
 // wxURL ////////////////////////////////////////////////////////
@@ -56,8 +56,8 @@ wxHTTP wxURL::g_proxy;
 wxURL::wxURL(const wxString& url)
 {
   m_protocol = NULL;
 wxURL::wxURL(const wxString& url)
 {
   m_protocol = NULL;
-  if (g_proxy.IsConnected()) {
-    m_protocol = &g_proxy;
+  if (g_proxy->IsConnected()) {
+    m_protocol = g_proxy;
     m_protoname = "proxy";
     m_path = url;
     return;
     m_protoname = "proxy";
     m_path = url;
     return;
@@ -267,7 +267,7 @@ wxInputStream *wxURL::GetInputStream(void)
 
 void wxURL::SetDefaultProxy(const wxString& url_proxy)
 {
 
 void wxURL::SetDefaultProxy(const wxString& url_proxy)
 {
-  g_proxy.Close();
+  g_proxy->Close();
 
   if (url_proxy.IsNull())
     return;
 
   if (url_proxy.IsNull())
     return;
@@ -281,7 +281,7 @@ void wxURL::SetDefaultProxy(const wxString& url_proxy)
   addr.Hostname(hostname);
   addr.Service(port);
   
   addr.Hostname(hostname);
   addr.Service(port);
   
-  g_proxy.Connect(addr);
+  g_proxy->Connect(addr);
 }
 
 void wxURL::SetProxy(const wxString& url_proxy)
 }
 
 void wxURL::SetProxy(const wxString& url_proxy)