aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
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
commit4b87bf80cada418a5cf193447c31f4d736bde492 (patch)
tree4b787629e35ebe38b61c2793492abe8695654af9 /src
parent4d9fec4df948eea53dac295a7aeddbcd92b39ed9 (diff)
downloadscintilla-mirror-4b87bf80cada418a5cf193447c31f4d736bde492.tar.gz
Bug [#1975]. Avoid duplicate calls by using inline function instead of macro.
Diffstat (limited to 'src')
-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;