From 00cc6351fd4a0cdf216eba3cc4918aa3c7aa0704 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Tue, 8 Feb 2022 21:25:51 +0100 Subject: Small fix. --- include/stc/cregex.h | 13 +++++++------ src/cregex.c | 11 ++++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/include/stc/cregex.h b/include/stc/cregex.h index 38d7042c..4b9bde51 100644 --- a/include/stc/cregex.h +++ b/include/stc/cregex.h @@ -52,12 +52,13 @@ typedef enum { } cregex_error_t; enum { - /* flags */ - creg_dotall = 1<<0, /* compile */ - creg_caseless = 1<<1, /* compile+match */ - creg_fullmatch = 1<<2, /* match */ - creg_next = 1<<3, /* match */ - creg_startend = 1<<4, /* match */ + /* compile flags */ + creg_dotall = 1<<0, + creg_caseless = 1<<1, + /* execution flags */ + creg_fullmatch = 1<<2, + creg_next = 1<<3, + creg_startend = 1<<4, /* limits */ creg_max_classes = 16, creg_max_captures = 32, diff --git a/src/cregex.c b/src/cregex.c index b07f9bfd..6d48e696 100644 --- a/src/cregex.c +++ b/src/cregex.c @@ -166,7 +166,7 @@ typedef struct Reljunk { Relist* relist[2]; Relist* reliste[2]; - Token starttype; + int starttype; Rune startchar; const char* starts; const char* eol; @@ -326,8 +326,8 @@ typedef struct Parser short cursubid; /* id of current subexpression */ int errors; Reflags flags; - Token dot_type; - Token rune_type; + int dot_type; + int rune_type; bool lastwasand; /* Last token was operand */ bool lexdone; short nbra; @@ -1078,8 +1078,9 @@ regexec9(const Reprog *progp, /* program to run */ j.starttype = 0; j.startchar = 0; - if (progp->startinst->type == RUNE && progp->startinst->r.rune < 128) { - j.starttype = RUNE; + int rune_type = progp->flags.caseless ? IRUNE : RUNE; + if (progp->startinst->type == rune_type && progp->startinst->r.rune < 128) { + j.starttype = rune_type; j.startchar = progp->startinst->r.rune; } if (progp->startinst->type == BOL) -- cgit v1.2.3