sorry that s should have a k preceding _ /c:2021248pm On Wed, Nov 24, 2021 at 1:28 AM Conor Williams wrote: > why on Gaia do you not have a > Runemas_Incremented_By_One_To_Keep_A_Negative_Sub > variable? > apart from that, it looks okay... will tango it in later... > > /c:2022November!^N^M > > 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-M5540075cb6bb20848c0e586d Delivery options: https://9fans.topicbox.com/groups/9fans/subscription