From a60591972952ba547400527811334fdbc941f33c Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 25 Dec 2017 21:08:04 +0300 Subject: [PATCH] Fix lv2_socket id_base --- rpcs3/Emu/Cell/lv2/sys_net.cpp | 10 +++++----- rpcs3/Emu/Cell/lv2/sys_net.h | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/rpcs3/Emu/Cell/lv2/sys_net.cpp b/rpcs3/Emu/Cell/lv2/sys_net.cpp index 0fcf745027..8202abd6e3 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_net.cpp @@ -88,7 +88,7 @@ static s32 get_last_error(bool is_blocking, int native_error = 0) static void network_clear_queue(ppu_thread& ppu) { - idm::select([&](u32 id, lv2_socket& sock) + idm::select([&](u32, lv2_socket& sock) { semaphore_lock lock(sock.mutex); @@ -356,7 +356,7 @@ s32 sys_net_bnet_accept(ppu_thread& ppu, s32 s, vm::ptr addr, result = idm::import_existing(newsock); - if (result == -1) + if (result == id_manager::id_traits::invalid) { return -SYS_NET_EMFILE; } @@ -1386,7 +1386,7 @@ s32 sys_net_bnet_socket(ppu_thread& ppu, s32 family, s32 type, s32 protocol) const s32 s = idm::import_existing(std::make_shared(native_socket)); - if (s == -1) + if (s == id_manager::id_traits::invalid) { return -SYS_NET_EMFILE; } @@ -1624,7 +1624,7 @@ s32 sys_net_bnet_select(ppu_thread& ppu, s32 nfds, vm::ptr readf continue; } - if (auto sock = idm::check_unlocked(i)) + if (auto sock = idm::check_unlocked((lv2_socket::id_base & -1024) + i)) { #ifdef _WIN32 bool sig = false; @@ -1700,7 +1700,7 @@ s32 sys_net_bnet_select(ppu_thread& ppu, s32 nfds, vm::ptr readf continue; } - if (auto sock = idm::check_unlocked(i)) + if (auto sock = idm::check_unlocked((lv2_socket::id_base & -1024) + i)) { semaphore_lock lock(sock->mutex); diff --git a/rpcs3/Emu/Cell/lv2/sys_net.h b/rpcs3/Emu/Cell/lv2/sys_net.h index 0b35a16487..3cd2e3daff 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net.h +++ b/rpcs3/Emu/Cell/lv2/sys_net.h @@ -8,7 +8,7 @@ #include // Error codes -enum +enum { SYS_NET_ENOENT = 2, SYS_NET_EINTR = 4, @@ -172,7 +172,7 @@ using sys_net_socklen_t = u32; struct sys_net_fd_set { be_t fds_bits[32]; - + u32 bit(s32 s) { return (fds_bits[(s >> 5) & 31] >> (s & 31)) & 1u; @@ -307,9 +307,9 @@ struct lv2_socket final using socket_type = int; #endif - static const u32 id_base = 0x40000000; + static const u32 id_base = 24; static const u32 id_step = 1; - static const u32 id_count = 1024; + static const u32 id_count = 1000; // Poll events enum class poll