From 91e11cc095a82d90afd7cdb097b1beb6d279b56c Mon Sep 17 00:00:00 2001 From: Laurent Gomila Date: Tue, 9 Jul 2013 15:46:17 +0200 Subject: [PATCH] sfTcpListener_accept now returns a null pointer when it fails --- include/SFML/Network/TcpListener.h | 4 ++++ src/SFML/Network/TcpListener.cpp | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/SFML/Network/TcpListener.h b/include/SFML/Network/TcpListener.h index 50d9360..f0fdfca 100644 --- a/include/SFML/Network/TcpListener.h +++ b/include/SFML/Network/TcpListener.h @@ -112,6 +112,10 @@ CSFML_NETWORK_API sfSocketStatus sfTcpListener_listen(sfTcpListener* listener, u /// If the socket is in blocking mode, this function will /// not return until a connection is actually received. /// +/// The \a connected argument points to a valid sfTcpSocket pointer +/// in case of success (the function returns sfSocketDone), it points +/// to a NULL pointer otherwise. +/// /// \param listener TCP listener object /// \param connected Socket that will hold the new connection /// diff --git a/src/SFML/Network/TcpListener.cpp b/src/SFML/Network/TcpListener.cpp index c5cceb1..8f2a2e2 100644 --- a/src/SFML/Network/TcpListener.cpp +++ b/src/SFML/Network/TcpListener.cpp @@ -82,5 +82,13 @@ sfSocketStatus sfTcpListener_accept(sfTcpListener* listener, sfTcpSocket** conne CSFML_CHECK_RETURN(connected, sfSocketError); *connected = new sfTcpSocket; - return static_cast(listener->This.accept((*connected)->This)); + sfSocketStatus status = static_cast(listener->This.accept((*connected)->This)); + + if (status != sfSocketDone) + { + delete *connected; + *connected = NULL; + } + + return status; }