X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnet%2Fsocket.cpp;h=877c1da2b99a31d586b9f5832717411cee96d625;hb=ede42d5bb352841e2e425972e12b8ef31ddf2123;hp=9fd468ef84111175c620dc216932c1c387bbac26;hpb=5afa6e0e07b20ef58d262d69d96971df9a4be71f;p=libs%2Fnet.git diff --git a/source/net/socket.cpp b/source/net/socket.cpp index 9fd468e..877c1da 100644 --- a/source/net/socket.cpp +++ b/source/net/socket.cpp @@ -11,8 +11,7 @@ namespace Msp { namespace Net { Socket::Socket(const Private &p): - priv(new Private), - local_addr(0) + priv(make_unique()) { mode = IO::M_RDWR; @@ -20,14 +19,13 @@ Socket::Socket(const Private &p): SockAddr::SysAddr sa; getsockname(priv->handle, reinterpret_cast(&sa.addr), &sa.size); - local_addr = SockAddr::new_from_sys(sa); + local_addr.reset(SockAddr::new_from_sys(sa)); platform_init(); } Socket::Socket(Family af, int type, int proto): - priv(new Private), - local_addr(0) + priv(make_unique()) { mode = IO::M_RDWR; @@ -40,9 +38,6 @@ Socket::Socket(Family af, int type, int proto): Socket::~Socket() { platform_cleanup(); - - delete local_addr; - delete priv; } void Socket::set_block(bool b) @@ -76,13 +71,12 @@ void Socket::bind(const SockAddr &addr) if(err==-1) throw system_error("bind"); - delete local_addr; - local_addr = addr.copy(); + local_addr.reset(addr.copy()); } const SockAddr &Socket::get_local_address() const { - if(local_addr==0) + if(!local_addr) throw bad_socket_state("not bound"); return *local_addr; }