aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/RESearch.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/RESearch.cxx')
-rw-r--r--src/RESearch.cxx35
1 files changed, 16 insertions, 19 deletions
diff --git a/src/RESearch.cxx b/src/RESearch.cxx
index 86f2d0e9e..de4dc08a9 100644
--- a/src/RESearch.cxx
+++ b/src/RESearch.cxx
@@ -254,8 +254,6 @@ RESearch::RESearch(CharClassify *charClassTable) {
charClass = charClassTable;
sta = NOP; /* status of lastpat */
bol = 0;
- constexpr unsigned char nul = 0;
- std::fill(bittab, std::end(bittab), nul);
nfa[0] = END;
Clear();
}
@@ -423,8 +421,7 @@ const char *RESearch::Compile(const char *pattern, Sci::Position length, bool ca
return badpat("No previous regular expression");
}
- constexpr unsigned char nul = 0;
- std::fill(bittab, std::end(bittab), nul);
+ bittab.fill(0);
nfa[0] = END;
char *mp=nfa; /* nfa pointer */
@@ -435,8 +432,6 @@ const char *RESearch::Compile(const char *pattern, Sci::Position length, bool ca
int tagi = 0; /* tag stack index */
int tagc = 1; /* actual tag count */
- char mask = 0; /* xor mask -CCL/NCL */
-
sta = NOP;
const char *p=pattern; /* pattern pointer */
@@ -469,16 +464,14 @@ const char *RESearch::Compile(const char *pattern, Sci::Position length, bool ca
break;
case '[': { /* match char class */
- *mp++ = CCL;
int prevChar = 0;
+ char mask = 0; /* xor mask -CCL/NCL */
i++;
if (*++p == '^') {
mask = '\377';
i++;
p++;
- } else {
- mask = 0;
}
if (*p == '-') { /* real dash */
@@ -565,9 +558,11 @@ const char *RESearch::Compile(const char *pattern, Sci::Position length, bool ca
if (!*p)
return badpat("Missing ]");
- for (int n = 0; n < BITBLK; bittab[n++] = 0)
- *mp++ = static_cast<char>(mask ^ bittab[n]);
-
+ *mp++ = CCL;
+ for (const unsigned char byte : bittab) {
+ *mp++ = mask ^ byte;
+ }
+ bittab.fill(0);
} break;
case '*': /* match 0 or more... */
@@ -666,9 +661,10 @@ const char *RESearch::Compile(const char *pattern, Sci::Position length, bool ca
*mp++ = static_cast<unsigned char>(c);
} else {
*mp++ = CCL;
- mask = 0;
- for (int n = 0; n < BITBLK; bittab[n++] = 0)
- *mp++ = static_cast<char>(mask ^ bittab[n]);
+ for (const unsigned char byte : bittab) {
+ *mp++ = byte;
+ }
+ bittab.fill(0);
}
}
}
@@ -700,11 +696,12 @@ const char *RESearch::Compile(const char *pattern, Sci::Position length, bool ca
*mp++ = CHR;
*mp++ = c;
} else {
- *mp++ = CCL;
- mask = 0;
ChSetWithCase(c, false);
- for (int n = 0; n < BITBLK; bittab[n++] = 0)
- *mp++ = static_cast<char>(mask ^ bittab[n]);
+ *mp++ = CCL;
+ for (const unsigned char byte : bittab) {
+ *mp++ = byte;
+ }
+ bittab.fill(0);
}
}
break;