On Sun, Jan 03, 2021 at 04:45:30PM +0000, Miod Vallat wrote:
> > 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
>
> Why not. What about that?
Thanks. Here's the diff rebased on top of -current. This is
ok tb
Index: regcomp.c
===================================================================
RCS file: /cvs/src/lib/libc/regex/regcomp.c,v
retrieving revision 1.42
diff -u -p -r1.42 regcomp.c
--- regcomp.c 2 Jan 2021 20:42:01 -0000 1.42
+++ regcomp.c 3 Jan 2021 16:48:59 -0000
@@ -1099,7 +1099,7 @@ freezeset(struct parse *p, cset *cs)
if (cs2->hash == h && cs2 != cs) {
/* maybe */
for (i = 0; i < css; i++)
- if (!!CHIN(cs2, i) != !!CHIN(cs, i))
+ if (CHIN(cs2, i) != CHIN(cs, i))
break; /* no */
if (i == css)
break; /* yes */
Index: regex2.h
===================================================================
RCS file: /cvs/src/lib/libc/regex/regex2.h,v
retrieving revision 1.11
diff -u -p -r1.11 regex2.h
--- regex2.h 3 Jan 2021 10:50:02 -0000 1.11
+++ regex2.h 3 Jan 2021 16:49:20 -0000
@@ -122,10 +122,10 @@ CHsub(cset *cs, char c)
cs->hash -= c;
}
-static inline uch
+static inline int
CHIN(const cset *cs, char c)
{
- return cs->ptr[(uch)c] & cs->mask;
+ return (cs->ptr[(uch)c] & cs->mask) != 0;
}
/*