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();