diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp index 9b1062aef8..998a9b04f9 100644 --- a/src/core/hle/service/sockets/bsd.cpp +++ b/src/core/hle/service/sockets/bsd.cpp @@ -525,7 +525,11 @@ std::pair BSD::SocketImpl(Network::Domain domain, Network:: } auto const bsd_errno = descriptor.socket->Initialize(domain, type, protocol); descriptor.is_connection_based = IsConnectionBased(type); +#ifdef _WIN32 + if (descriptor.socket->fd == INVALID_SOCKET) { +#else if (descriptor.socket->fd == Network::Socket::INVALID_SOCKET) { +#endif file_descriptors[fd].reset(); return {-1, bsd_errno}; } diff --git a/src/core/internal_network/network.cpp b/src/core/internal_network/network.cpp index f57c587e0c..812983b23a 100644 --- a/src/core/internal_network/network.cpp +++ b/src/core/internal_network/network.cpp @@ -924,10 +924,8 @@ std::pair Poll(std::span pollfds, s32 timeout) { } Socket::~Socket() { - if (fd == INVALID_SOCKET) { - return; - } - (void)closesocket(fd); + if (fd != INVALID_SOCKET) + (void)closesocket(fd); fd = INVALID_SOCKET; }