updated for version 7.0115
diff --git a/src/syntax.c b/src/syntax.c
index 9058368..714c90a 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -679,6 +679,7 @@
linenr_T found_current_lnum = 0;
int found_current_col= 0;
lpos_T found_m_endpos;
+ colnr_T prev_current_col;
/*
* Clear any current state that might be hanging around.
@@ -849,10 +850,13 @@
++current_col;
/* syn_current_attr() will have skipped the check for
- * an item that ends here, need to do that now. */
- ++current_col;
+ * an item that ends here, need to do that now. Be
+ * careful not to go past the NUL. */
+ prev_current_col = current_col;
+ if (syn_getcurline()[current_col] != NUL)
+ ++current_col;
check_state_ends();
- --current_col;
+ current_col = prev_current_col;
}
else
break;
@@ -1647,6 +1651,7 @@
int syncing; /* called for syncing */
{
stateitem_T *cur_si;
+ colnr_T prev_current_col;
if (!current_finished)
{
@@ -1668,10 +1673,13 @@
return TRUE;
/* syn_current_attr() will have skipped the check for an item
- * that ends here, need to do that now. */
- ++current_col;
+ * that ends here, need to do that now. Be careful not to go
+ * past the NUL. */
+ prev_current_col = current_col;
+ if (syn_getcurline()[current_col] != NUL)
+ ++current_col;
check_state_ends();
- --current_col;
+ current_col = prev_current_col;
}
++current_col;
}
@@ -2252,7 +2260,8 @@
if (!syncing)
{
check_state_ends();
- if (current_state.ga_len > 0)
+ if (current_state.ga_len > 0
+ && syn_getcurline()[current_col] != NUL)
{
++current_col;
check_state_ends();