aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2019-08-23 13:23:15 +0300
committerArnold D. Robbins <arnold@skeeve.com>2019-08-23 13:23:15 +0300
commit8de8e60457bc273694f4b42e4f3f7148bd075576 (patch)
tree26666bd5df54d7520810ad18e7476db3e961cd58
parentea165901ac317100d3d54bc2ad7fc3582b1dd53c (diff)
downloadegawk-8de8e60457bc273694f4b42e4f3f7148bd075576.tar.gz
egawk-8de8e60457bc273694f4b42e4f3f7148bd075576.tar.bz2
egawk-8de8e60457bc273694f4b42e4f3f7148bd075576.zip
Small code cleanup in re.c.
-rw-r--r--ChangeLog4
-rw-r--r--re.c9
2 files changed, 9 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 2b666470..b608e023 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
2019-08-23 Arnold D. Robbins <arnold@skeeve.com>
- * main.c: Fix whitespace issues.
+ * main.c (main): Fix whitespace issues.
+ * re.c (re_update): Small code cleanup in handling t->re_cnt.
+ Thanks to Andrew Schorr.
2019-08-21 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/re.c b/re.c
index 91cff4d6..a23e7f6c 100644
--- a/re.c
+++ b/re.c
@@ -438,9 +438,12 @@ re_update(NODE *t)
refree(t->re_reg[1]);
t->re_reg[1] = NULL;
}
- if (t->re_cnt > 0)
- t->re_cnt++;
- if (t->re_cnt > 10)
+ if (t->re_cnt > 0 && ++t->re_cnt > 10)
+ /*
+ * The regex appears to update frequently, so disable DFA
+ * matching (which trades off expensive upfront compilation
+ * overhead for faster subsequent matching).
+ */
t->re_cnt = 0;
if (t->re_text == NULL) {
/* reset regexp text if needed */