From 2d1ba41e5f7a585a9c03b85b61a9b4bbb2448dc8 Mon Sep 17 00:00:00 2001 From: Rudrabhoj Bhati Date: Sat, 11 Apr 2026 03:15:10 +0700 Subject: [PATCH] fix kevent struct compilation on FreeBSD FreeBSD's libc::kevent has an ext field ([u64; 4]) that needs to be initialized. Without it the kevent macro fails to compile on FreeBSD 12+. Split the macro into a FreeBSD variant (with ext) and a non-FreeBSD variant (unchanged) so macOS, DragonFly, etc. are not affected. --- corcovado/src/sys/unix/kqueue.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/corcovado/src/sys/unix/kqueue.rs b/corcovado/src/sys/unix/kqueue.rs index 93673a45..65dc2999 100644 --- a/corcovado/src/sys/unix/kqueue.rs +++ b/corcovado/src/sys/unix/kqueue.rs @@ -36,6 +36,22 @@ type UData = ::libc::intptr_t; #[cfg(target_os = "netbsd")] type Count = usize; +#[cfg(target_os = "freebsd")] +macro_rules! kevent { + ($id: expr, $filter: expr, $flags: expr, $data: expr) => { + libc::kevent { + ident: $id as ::libc::uintptr_t, + filter: $filter as Filter, + flags: $flags, + fflags: 0, + data: 0, + udata: $data as UData, + ext: [0; 4], + } + }; +} + +#[cfg(not(target_os = "freebsd"))] macro_rules! kevent { ($id: expr, $filter: expr, $flags: expr, $data: expr) => { libc::kevent { -- 2.51.2