1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 20:07:36 +00:00

Kernel: Use TRY() in sys$read() and sys$readv()

This commit is contained in:
Andreas Kling 2021-09-05 16:25:09 +02:00
parent c1e18befe8
commit 9903f5c6ef

View file

@ -60,10 +60,8 @@ KResultOr<FlatPtr> Process::sys$readv(int fd, Userspace<const struct iovec*> iov
auto buffer = UserOrKernelBuffer::for_user_buffer((u8*)vec.iov_base, vec.iov_len); auto buffer = UserOrKernelBuffer::for_user_buffer((u8*)vec.iov_base, vec.iov_len);
if (!buffer.has_value()) if (!buffer.has_value())
return EFAULT; return EFAULT;
auto result = description->read(buffer.value(), vec.iov_len); auto nread_here = TRY(description->read(buffer.value(), vec.iov_len));
if (result.is_error()) nread += nread_here;
return result.error();
nread += result.value();
} }
return nread; return nread;
@ -98,10 +96,7 @@ KResultOr<FlatPtr> Process::sys$read(int fd, Userspace<u8*> buffer, size_t size)
auto user_buffer = UserOrKernelBuffer::for_user_buffer(buffer, size); auto user_buffer = UserOrKernelBuffer::for_user_buffer(buffer, size);
if (!user_buffer.has_value()) if (!user_buffer.has_value())
return EFAULT; return EFAULT;
auto result = description->read(user_buffer.value(), size); return TRY(description->read(user_buffer.value(), size));
if (result.is_error())
return result.error();
return result.value();
} }
} }