are u getting confused between Runemax and Runemask... I'm going to have my christmas dinner now ;; and reckon this patch would break a few things... i'm working off a mounted iso at the minute... it's handier: as in i have "-t iso9660" in it.. laters... /c:2021 crimbo hay ps: the jury is out on this one 'till after christmas but i'm not... pps: am i close?.. ppps: in bb vi a search for minus both ways works... ppps: should have an answer for you soon as to whether I would run with this patch On Tue, Nov 23, 2021 at 8:27 PM adr wrote: > The code assumes runes are 16 bits long, not 21, creating faulting > code parsing classes. I.e. '/[\-]' will not match '-'. > > This is the same fix already in 9front. > > http://adr.freeshell.org/plan9/patches/sam_fix_metachars_on_classes.diff > > --- /sys/src/cmd/sam/regexp.c Tue Apr 23 19:06:01 2013 > +++ regexp.c Tue Nov 23 15:01:18 2021 > @@ -53,8 +53,8 @@ > /* > * Actions and Tokens > * > - * 0x100xx are operators, value == precedence > - * 0x200xx are tokens, i.e. operands for operators > + * 0x2000xx are operators, value == precedence > + * 0x3000xx are tokens, i.e. operands for operators > */ > enum { > OPERATOR = Runemask+1, /* Bitmask of all operators */ > @@ -462,7 +462,8 @@ > exprp++; > return '\n'; > } > - return *exprp++|(Runemax+1); > + /* add a flag so metacharacters aren't interpreted */ > + return *exprp++|(Runemask+1); > } > return *exprp++; > } > @@ -498,11 +499,12 @@ > if((c2 = nextrec()) == ']') > goto Error; > classp[n+0] = Runemax; > - classp[n+1] = c1; > - classp[n+2] = c2; > + /* remove possible flag from nextrec() */ > + classp[n+1] = c1 & Runemask; > + classp[n+2] = c2 & Runemask; > n += 3; > }else > - classp[n++] = c1; > + classp[n++] = c1 & Runemask; > } > classp[n] = 0; > if(nclass == Nclass){ > ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/Tccbdb20b670003a1-Mde1c714fd9ca1af9f3407d8d Delivery options: https://9fans.topicbox.com/groups/9fans/subscription