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