diff options
| author | 2020-07-28 01:51:44 -0300 | |
|---|---|---|
| committer | 2020-07-28 01:51:47 -0300 | |
| commit | bc699ace15fc2dd2cc7ff022fa9ec6031ba09d13 (patch) | |
| tree | dc93022ab556c18745274f825fedb0195be35c92 /src | |
| parent | services/bsd: Implement most of bsd:s (diff) | |
| download | yuzu-bc699ace15fc2dd2cc7ff022fa9ec6031ba09d13.tar.gz yuzu-bc699ace15fc2dd2cc7ff022fa9ec6031ba09d13.tar.xz yuzu-bc699ace15fc2dd2cc7ff022fa9ec6031ba09d13.zip | |
service/bsd: Handle Poll with no entries accurately
Testing shows that Poll called with zero entries returns -1 and signals
an errno of zero.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/sockets/bsd.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp index 1d20f33a4..803505452 100644 --- a/src/core/hle/service/sockets/bsd.cpp +++ b/src/core/hle/service/sockets/bsd.cpp | |||
| @@ -465,6 +465,11 @@ std::pair<s32, Errno> BSD::PollImpl(std::vector<u8>& write_buffer, std::vector<u | |||
| 465 | return {-1, Errno::INVAL}; | 465 | return {-1, Errno::INVAL}; |
| 466 | } | 466 | } |
| 467 | 467 | ||
| 468 | if (nfds == 0) { | ||
| 469 | // When no entries are provided, -1 is returned with errno zero | ||
| 470 | return {-1, Errno::SUCCESS}; | ||
| 471 | } | ||
| 472 | |||
| 468 | const size_t length = std::min(read_buffer.size(), write_buffer.size()); | 473 | const size_t length = std::min(read_buffer.size(), write_buffer.size()); |
| 469 | std::vector<PollFD> fds(nfds); | 474 | std::vector<PollFD> fds(nfds); |
| 470 | std::memcpy(fds.data(), read_buffer.data(), length); | 475 | std::memcpy(fds.data(), read_buffer.data(), length); |