diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2008-10-29 19:46:57 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2008-10-29 19:46:57 +0000 |
| commit | 10e7e45ae92d4fe06f70126ed256b87896dbc432 (patch) | |
| tree | f4b03eb252e5517ccb67be3cd8463c10e14e147c /lib/network | |
| parent | 6bb94cd5b0d8fd3608afe84e8d76aef554a4b401 (diff) | |
| download | enigma2-10e7e45ae92d4fe06f70126ed256b87896dbc432.tar.gz enigma2-10e7e45ae92d4fe06f70126ed256b87896dbc432.zip | |
better solution to add possibility to delete eSocketNotifiers,
eConsoleAppContainers in callback funktions without crash
Diffstat (limited to 'lib/network')
| -rw-r--r-- | lib/network/socket.cpp | 10 | ||||
| -rw-r--r-- | lib/network/socket.h | 2 |
2 files changed, 4 insertions, 8 deletions
diff --git a/lib/network/socket.cpp b/lib/network/socket.cpp index b2ab7437..162ead81 100644 --- a/lib/network/socket.cpp +++ b/lib/network/socket.cpp @@ -10,7 +10,6 @@ void eSocket::close() if (writebuffer.empty()) { int wasconnected=(mystate==Connection) || (mystate==Closing); - delete rsn; rsn=0; ::close(socketdesc); socketdesc=-1; @@ -87,9 +86,8 @@ int eSocket::setSocket(int s, int iss, eMainloop *ml) fcntl(socketdesc, F_SETFL, O_NONBLOCK); last_break = 0xFFFFFFFF; - if (rsn) - delete rsn; - rsn=new eSocketNotifier(ml, getDescriptor(), + rsn = 0; + rsn=eSocketNotifier::create(ml, getDescriptor(), eSocketNotifier::Read|eSocketNotifier::Hungup); CONNECT(rsn->activated, eSocket::notifier); return 0; @@ -278,7 +276,7 @@ eSocket::eSocket(eMainloop *ml): readbuffer(32768), writebuffer(32768), rsn(0) setSocket(s, 1, ml); } -eSocket::eSocket(int socket, int issocket, eMainloop *ml): readbuffer(32768), writebuffer(32768), rsn(0) +eSocket::eSocket(int socket, int issocket, eMainloop *ml): readbuffer(32768), writebuffer(32768) { setSocket(socket, issocket, ml); mystate=Connection; @@ -286,8 +284,6 @@ eSocket::eSocket(int socket, int issocket, eMainloop *ml): readbuffer(32768), wr eSocket::~eSocket() { - if (rsn) - delete rsn; if(socketdesc>=0) { ::close(socketdesc); diff --git a/lib/network/socket.h b/lib/network/socket.h index 08a191f6..9ffc7a78 100644 --- a/lib/network/socket.h +++ b/lib/network/socket.h @@ -26,7 +26,7 @@ private: int writebusy; sockaddr_in serv_addr; protected: - eSocketNotifier *rsn; + ePtr<eSocketNotifier> rsn; virtual void notifier(int); public: eSocket(eMainloop *ml); |
