Avoid modifying any memory on SYS_NET_EINTR cases
This commit is contained in:
@@ -1424,13 +1424,13 @@ error_code sys_net_bnet_poll(ppu_thread& ppu, vm::ptr<sys_net_pollfd> fds, s32 n
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::memcpy(fds.get_ptr(), fds_buf.data(), nfds * sizeof(fds[0]));
|
|
||||||
|
|
||||||
if (!has_timedout && !signaled)
|
if (!has_timedout && !signaled)
|
||||||
{
|
{
|
||||||
return -SYS_NET_EINTR;
|
return -SYS_NET_EINTR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::memcpy(fds.get_ptr(), fds_buf.data(), nfds * sizeof(fds[0]));
|
||||||
|
|
||||||
return not_an_error(signaled);
|
return not_an_error(signaled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1664,6 +1664,11 @@ error_code sys_net_bnet_select(ppu_thread& ppu, s32 nfds, vm::ptr<sys_net_fd_set
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!has_timedout && !signaled)
|
||||||
|
{
|
||||||
|
return -SYS_NET_EINTR;
|
||||||
|
}
|
||||||
|
|
||||||
if (readfds)
|
if (readfds)
|
||||||
*readfds = rread;
|
*readfds = rread;
|
||||||
if (writefds)
|
if (writefds)
|
||||||
@@ -1671,11 +1676,6 @@ error_code sys_net_bnet_select(ppu_thread& ppu, s32 nfds, vm::ptr<sys_net_fd_set
|
|||||||
if (exceptfds)
|
if (exceptfds)
|
||||||
*exceptfds = rexcept;
|
*exceptfds = rexcept;
|
||||||
|
|
||||||
if (!has_timedout && !signaled)
|
|
||||||
{
|
|
||||||
return -SYS_NET_EINTR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return not_an_error(signaled);
|
return not_an_error(signaled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user