summaryrefslogtreecommitdiff
path: root/src/regexp_nfa.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2013-08-14 14:18:40 +0200
committerBram Moolenaar <Bram@vim.org>2013-08-14 14:18:40 +0200
commitebefd997bbc2ec79fd33145fd88126cfd1b87fa3 (patch)
tree8da6ffad1e57f01f07b471402389071e0ee26deb /src/regexp_nfa.c
parent3f0df06c2860788c6591b03e38b7dcd5bcfd27a6 (diff)
downloadvim-git-ebefd997bbc2ec79fd33145fd88126cfd1b87fa3.tar.gz
updated for version 7.4.003v7.4.003
Problem: Memory access error in Ruby syntax highlighting. (Christopher Chow) Solution: Refresh stale pointer. (James McCoy)
Diffstat (limited to 'src/regexp_nfa.c')
-rw-r--r--src/regexp_nfa.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 203d9ff64..57539f4e5 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -4120,7 +4120,7 @@ skip_add:
sub = &subs->norm;
}
#ifdef FEAT_SYN_HL
- else if (state->c >= NFA_ZOPEN)
+ else if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9)
{
subidx = state->c - NFA_ZOPEN;
sub = &subs->synt;
@@ -4189,6 +4189,13 @@ skip_add:
}
subs = addstate(l, state->out, subs, pim, off);
+ /* "subs" may have changed, need to set "sub" again */
+#ifdef FEAT_SYN_HL
+ if (state->c >= NFA_ZOPEN && state->c <= NFA_ZOPEN9)
+ sub = &subs->synt;
+ else
+#endif
+ sub = &subs->norm;
if (save_in_use == -1)
{
@@ -4237,7 +4244,7 @@ skip_add:
sub = &subs->norm;
}
#ifdef FEAT_SYN_HL
- else if (state->c >= NFA_ZCLOSE)
+ else if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9)
{
subidx = state->c - NFA_ZCLOSE;
sub = &subs->synt;
@@ -4281,6 +4288,13 @@ skip_add:
}
subs = addstate(l, state->out, subs, pim, off);
+ /* "subs" may have changed, need to set "sub" again */
+#ifdef FEAT_SYN_HL
+ if (state->c >= NFA_ZCLOSE && state->c <= NFA_ZCLOSE9)
+ sub = &subs->synt;
+ else
+#endif
+ sub = &subs->norm;
if (REG_MULTI)
sub->list.multi[subidx].end = save_lpos;