On Sat, Jan 02, 2021 at 08:33:51PM +0000, Miod Vallat wrote: > That code was written before inline functions were supported by > compilers; now that they are even part of the language standard, turn > macros into inline functions so that there is no need to document in > comments that they will evaluate their arguments multiple times. >
ok tb Minor comments inline > (one may consider switching their names to lowercase now that these are > no longer macros.) No opinion. > > Index: regex2.h > =================================================================== > RCS file: /OpenBSD/src/lib/libc/regex/regex2.h,v > retrieving revision 1.10 > diff -u -p -r1.10 regex2.h > --- regex2.h 31 Dec 2020 17:20:19 -0000 1.10 > +++ regex2.h 2 Jan 2021 15:59:51 -0000 > @@ -107,10 +107,24 @@ typedef struct { > uch mask; /* bit within array */ > uch hash; /* hash code */ > } cset; > -/* note that CHadd and CHsub are unsafe, and CHIN doesn't yield 0/1 */ > -#define CHadd(cs, c) ((cs)->ptr[(uch)(c)] |= (cs)->mask, (cs)->hash > += (c)) > -#define CHsub(cs, c) ((cs)->ptr[(uch)(c)] &= ~(cs)->mask, (cs)->hash > -= (c)) > -#define CHIN(cs, c) ((cs)->ptr[(uch)(c)] & (cs)->mask) > + > +static inline void > +CHadd(cset *cs, char c) > +{ > + cs->ptr[(uch)c] |= cs->mask; > + cs->hash += c; > +} I would put a blank line here > +static inline void > +CHsub(cset *cs, char c) > +{ > + cs->ptr[(uch)c] &= ~cs->mask; > + cs->hash -= c; > +} and here. > +static inline uch > +CHIN(const cset *cs, char c) > +{ > + return cs->ptr[(uch)c] & cs->mask; Is there a reason not to do return (cs->ptr[(uch)c] & cs->mask) != 0; This would allow us to get rid of the !! construct in regcomp.c > +} > > /* > * main compiled-expression structure >