From c7300009cdf8f558dd6129228e3b2a7072a58720 Mon Sep 17 00:00:00 2001
From: Steve Lau <stevelauc@outlook.com>
Date: Sat, 20 Jul 2024 20:41:52 +0800
Subject: [PATCH] feat: ignore negative fd and clear its revents in poll(2)

---
 src/header/poll/mod.rs | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/header/poll/mod.rs b/src/header/poll/mod.rs
index 887402ce..cbf4e9de 100644
--- a/src/header/poll/mod.rs
+++ b/src/header/poll/mod.rs
@@ -57,6 +57,12 @@ pub fn poll_epoll(fds: &mut [pollfd], timeout: c_int) -> c_int {
     for i in 0..fds.len() {
         let mut pfd = &mut fds[i];
 
+        // Ignore the entry with negative fd, set the revents to 0
+        if pfd.fd < 0 {
+            pfd.revents = 0;
+            continue;
+        }
+
         let mut event = epoll_event {
             events: 0,
             data: epoll_data { u64: i as u64 },
-- 
GitLab