diff --git a/rpcs3/Emu/Cell/lv2/sys_net.cpp b/rpcs3/Emu/Cell/lv2/sys_net.cpp index 48d1c6f794..0bf57e1a5b 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_net.cpp @@ -175,26 +175,33 @@ void windows_poll(pollfd* fds, unsigned long nfds, int timeout, bool* connecting #endif // Error helper functions +static int get_native_error() +{ + int native_error = 0; +#ifdef _WIN32 + native_error = WSAGetLastError(); +#else + native_error = errno; +#endif + + return native_error; +} + static sys_net_error get_last_error(bool is_blocking, int native_error = 0) { // Convert the error code for socket functions to a one for sys_net - sys_net_error result; + sys_net_error result{}; const char* name{}; -#ifdef _WIN32 if (!native_error) { - native_error = WSAGetLastError(); + native_error = get_native_error(); } +#ifdef _WIN32 switch (native_error) #define ERROR_CASE(error) case WSA ## error: result = SYS_NET_ ## error; name = #error; break; #else - if (!native_error) - { - native_error = errno; - } - switch (native_error) #define ERROR_CASE(error) case error: result = SYS_NET_ ## error; name = #error; break; #endif @@ -1797,6 +1804,18 @@ error_code sys_net_bnet_getsockname(ppu_thread& ppu, s32 s, vm::ptr