NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: PR/57809
The following reply was made to PR lib/57809; it has been noted by GNATS.
From: RVP <rvp%SDF.ORG@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: PR/57809
Date: Mon, 26 May 2025 11:55:51 +0000 (UTC)
It's already doing the right thing in the `!__GNUC_PREREQ__(2, 95)' case.
Why not do that everywhere:
```
--- sys/fd_set.h.orig 2025-05-23 02:48:19.000000000 +0000
+++ sys/fd_set.h 2025-05-26 11:41:36.167232304 +0000
@@ -67,22 +67,24 @@
__fd_mask fds_bits[__NFD_SIZE];
} fd_set;
-#define FD_SET(n, p) \
- ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] |= (1U << ((n) & __NFDMASK)))
-#define FD_CLR(n, p) \
- ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] &= ~(1U << ((n) & __NFDMASK)))
-#define FD_ISSET(n, p) \
- ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] & (1U << ((n) & __NFDMASK)))
-#if __GNUC_PREREQ__(2, 95)
-#define FD_ZERO(p) (void)__builtin_memset((p), 0, sizeof(*(p)))
-#else
+#define FD_SET(n, p) do { \
+ fd_set *__fds = (p); \
+ ((__fds)->fds_bits[(unsigned)(n) >> __NFDSHIFT] |= (1U << ((n) & __NFDMASK))); \
+ } while (0)
+#define FD_CLR(n, p) do { \
+ fd_set *__fds = (p); \
+ ((__fds)->fds_bits[(unsigned)(n) >> __NFDSHIFT] &= ~(1U << ((n) & __NFDMASK))); \
+ } while (0)
+#define FD_ISSET(n, p) do { \
+ fd_set *__fds = (p); \
+ ((__fds)->fds_bits[(unsigned)(n) >> __NFDSHIFT] & (1U << ((n) & __NFDMASK))); \
+ } while (0)
#define FD_ZERO(p) do { \
fd_set *__fds = (p); \
unsigned int __i; \
for (__i = 0; __i < __NFD_SIZE; __i++) \
__fds->fds_bits[__i] = 0; \
} while (0)
-#endif /* GCC 2.95 */
/*
* Expose our internals if we are not required to hide them.
```
-RVP
Home |
Main Index |
Thread Index |
Old Index