From b385e357cdcb1f41ca841c12968bde66a2005c72 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 6 Aug 2025 19:00:20 -0400 Subject: [PATCH] LibCore: Always reset the polled `revents` field back to 0 One benefit of using `poll` over `select` is that we can re-use the poll structure list. But there's no guarantee that the underlying system will reset the `revents` field back to 0. So let's explicitly do so. (cherry picked from commit f46b721c57b9ccde9ad3de3034f626e0a7607e92, tweaked due to additional Userland/ prefix in path) --- Userland/Libraries/LibCore/System.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibCore/System.cpp b/Userland/Libraries/LibCore/System.cpp index 63e6e7f790a..c67823144a5 100644 --- a/Userland/Libraries/LibCore/System.cpp +++ b/Userland/Libraries/LibCore/System.cpp @@ -1771,10 +1771,14 @@ ErrorOr readlink(StringView pathname) ErrorOr poll(Span poll_fds, int timeout) { + for (auto& poll_fd : poll_fds) + poll_fd.revents = 0; + auto const rc = ::poll(poll_fds.data(), poll_fds.size(), timeout); if (rc < 0) return Error::from_syscall("poll"sv, -errno); - return { rc }; + + return rc; } #ifdef AK_OS_SERENITY