diff --git a/core/libs/prx/libkernel/File/src/Stdio.cpp b/core/libs/prx/libkernel/File/src/Stdio.cpp index dbb451f04..0a1cb021d 100644 --- a/core/libs/prx/libkernel/File/src/Stdio.cpp +++ b/core/libs/prx/libkernel/File/src/Stdio.cpp @@ -472,8 +472,6 @@ int File::DuplicateFrom(int fd, int start) { #else const int duplicate = ::fcntl(fd, F_DUPFD, start); if (duplicate < 0) return PosixFailure(SceErrorFromErrno(errno) & 0xffff); - if (duplicate >= GuestSockets::FirstDescriptor) - throw std::runtime_error("fcntl: host descriptor reached the guest socket range"); if (File::IsRandomDevice(fd)) File::RememberRandomDevice(duplicate); File::ShareDescriptor(fd, duplicate); return duplicate; diff --git a/core/libs/prx/libkernel/Socket/src/Udp.cpp b/core/libs/prx/libkernel/Socket/src/Udp.cpp index dad367314..a1ef0378c 100644 --- a/core/libs/prx/libkernel/Socket/src/Udp.cpp +++ b/core/libs/prx/libkernel/Socket/src/Udp.cpp @@ -670,7 +670,7 @@ int GuestSockets::Poll(KernelSocketPoll::Entry* entries, int count, int timeoutM extern "C" { int APS5_VABI fcntl_nid_postfix(int descriptor, int command, ...) { - if (descriptor < GuestSockets::FirstDescriptor) { + if (!GuestSockets::IsOpen(descriptor)) { const auto type = File::FcntlArgumentOf(command); std::intptr_t argument = 0; if (type != File::FcntlArgument::None) { @@ -917,7 +917,7 @@ int APS5_VABI getpeername_nid_postfix(int descriptor, void* address, std::uint32 return 0; } int APS5_VABI ioctl_nid_postfix(int descriptor, std::uint64_t request, void* argument) { - if (descriptor < GuestSockets::FirstDescriptor) return File::Ioctl(descriptor, request, argument); + if (!GuestSockets::IsOpen(descriptor)) return File::Ioctl(descriptor, request, argument); const auto socket = Lookup(descriptor); if (!socket) return -1; if (!argument) return Fail(14);