changeset 9266:93bbb9fbf30d default tip

Fixed compilation on NetBSD 10. NetBSD 10 changed struct kevent's udata type from "intptr_t" to "void *", similarly to how it is defined on other systems. This breaks compilation, since intptr_t is assumed on NetBSD. Fix is to limit special intptr_t handling to NetBSD versions before 10.0. To simplify testing, relevant definitions are moved from configure to code (which seems to be the right thing anyway).
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 06 May 2024 00:07:33 +0300
parents d89e0386b695
children
files auto/unix src/os/unix/ngx_darwin_config.h src/os/unix/ngx_freebsd_config.h src/os/unix/ngx_posix_config.h
diffstat 4 files changed, 12 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/auto/unix
+++ b/auto/unix
@@ -129,26 +129,6 @@ if test -z "$NGX_KQUEUE_CHECKED"; then
 fi
 
 
-if [ "$NGX_SYSTEM" = "NetBSD" ]; then
-
-    # NetBSD 2.0 incompatibly defines kevent.udata as "intptr_t"
-
-    cat << END >> $NGX_AUTO_CONFIG_H
-
-#define NGX_KQUEUE_UDATA_T
-
-END
-
-else
-    cat << END >> $NGX_AUTO_CONFIG_H
-
-#define NGX_KQUEUE_UDATA_T  (void *)
-
-END
-
-fi
-
-
 ngx_feature="crypt()"
 ngx_feature_name=
 ngx_feature_run=no
--- a/src/os/unix/ngx_darwin_config.h
+++ b/src/os/unix/ngx_darwin_config.h
@@ -74,6 +74,7 @@
 
 #if (NGX_HAVE_KQUEUE)
 #include <sys/event.h>
+#define NGX_KQUEUE_UDATA_T  (void *)
 #endif
 
 
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -85,6 +85,7 @@
 
 #if (NGX_HAVE_KQUEUE)
 #include <sys/event.h>
+#define NGX_KQUEUE_UDATA_T  (void *)
 #endif
 
 
--- a/src/os/unix/ngx_posix_config.h
+++ b/src/os/unix/ngx_posix_config.h
@@ -124,7 +124,17 @@
 
 
 #if (NGX_HAVE_KQUEUE)
+
 #include <sys/event.h>
+
+/* NetBSD before 10.0 incompatibly defines kevent.udata as "intptr_t" */
+
+#if (defined __NetBSD__ && __NetBSD_Version__ < 999001500)
+#define NGX_KQUEUE_UDATA_T
+#else
+#define NGX_KQUEUE_UDATA_T  (void *)
+#endif
+
 #endif