aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorZufu Liu <unknown>2017-10-16 12:25:28 +1100
committerZufu Liu <unknown>2017-10-16 12:25:28 +1100
commitfb2b3ef2c35f917984f33932c480d9ec9c197194 (patch)
treea6c88bd67b48008ad36a22cfc28eccae3f1301e2
parent2cfc6e7df00f17f8bb2fade876e2ae2220e2e51e (diff)
downloadscintilla-mirror-fb2b3ef2c35f917984f33932c480d9ec9c197194.tar.gz
Backport: Bug [#1975]. Avoid duplicate calls by using inline function instead of macro.
Backport of changeset 6400:4f1dfd6a7975.
-rw-r--r--src/RESearch.cxx11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/RESearch.cxx b/src/RESearch.cxx
index cee61cff6..0603b5870 100644
--- a/src/RESearch.cxx
+++ b/src/RESearch.cxx
@@ -238,7 +238,7 @@ using namespace Scintilla;
#define BLKIND 0370
#define BITIND 07
-const char bitarr[] = { 1, 2, 4, 8, 16, 32, 64, '\200' };
+static const char bitarr[] = { 1, 2, 4, 8, 16, 32, 64, '\200' };
#define badpat(x) (*nfa = END, x)
@@ -833,7 +833,9 @@ int RESearch::Execute(CharacterIndexer &ci, Sci::Position lp, Sci::Position endp
extern void re_fail(char *,char);
-#define isinset(x,y) ((x)[((y)&BLKIND)>>3] & bitarr[(y)&BITIND])
+static inline int isinset(const char *ap, unsigned char c) {
+ return ap[(c & BLKIND) >> 3] & bitarr[c & BITIND];
+}
/*
* skip values for CLO XXX to skip past the closure
@@ -865,8 +867,7 @@ Sci::Position RESearch::PMatch(CharacterIndexer &ci, Sci::Position lp, Sci::Posi
case CCL:
if (lp >= endp)
return NOTFOUND;
- c = ci.CharAt(lp++);
- if (!isinset(ap,c))
+ if (!isinset(ap, ci.CharAt(lp++)))
return NOTFOUND;
ap += BITBLK;
break;
@@ -925,7 +926,7 @@ Sci::Position RESearch::PMatch(CharacterIndexer &ci, Sci::Position lp, Sci::Posi
n = CHRSKIP;
break;
case CCL:
- while ((lp < endp) && isinset(ap+1,ci.CharAt(lp)))
+ while ((lp < endp) && isinset(ap+1, ci.CharAt(lp)))
lp++;
n = CCLSKIP;
break;