Index: src/OFKqueueKernelEventObserver.m ================================================================== --- src/OFKqueueKernelEventObserver.m +++ src/OFKqueueKernelEventObserver.m @@ -87,15 +87,15 @@ memset(&event, 0, sizeof(event)); event.ident = object.fileDescriptorForReading; event.filter = EVFILT_READ; event.flags = EV_ADD; -#ifndef OF_NETBSD - event.udata = object; -#else - event.udata = (intptr_t)object; -#endif + /* + * Ugly hack required for NetBSD: NetBSD used `intptr_t` for udata, but + * switched this to `void *` in NetBSD 10. + */ + event.udata = (__typeof__(event.udata))object; if (kevent(_kernelQueue, &event, 1, NULL, 0, NULL) != 0) @throw [OFObserveFailedException exceptionWithObserver: self errNo: errno]; @@ -108,15 +108,15 @@ memset(&event, 0, sizeof(event)); event.ident = object.fileDescriptorForWriting; event.filter = EVFILT_WRITE; event.flags = EV_ADD; -#ifndef OF_NETBSD - event.udata = object; -#else - event.udata = (intptr_t)object; -#endif + /* + * Ugly hack required for NetBSD: NetBSD used `intptr_t` for udata, but + * switched this to `void *` in NetBSD 10. + */ + event.udata = (__typeof__(event.udata))object; if (kevent(_kernelQueue, &event, 1, NULL, 0, NULL) != 0) @throw [OFObserveFailedException exceptionWithObserver: self errNo: errno];