changeset 4482:cd005ab15ef3 v7.3.989

updated for version 7.3.989 Problem: New regexp engine compares negative numbers to character. Solution: Add missing case statements.
author Bram Moolenaar <bram@vim.org>
date Tue, 21 May 2013 15:33:41 +0200
parents 407cdb221614
children 3e69f35334aa
files src/regexp_nfa.c src/version.c
diffstat 2 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -3383,8 +3383,30 @@ again:
 		ADD_POS_NEG_STATE(t->state);
 		break;
 
+	    case NFA_MOPEN + 0:
+	    case NFA_MOPEN + 1:
+	    case NFA_MOPEN + 2:
+	    case NFA_MOPEN + 3:
+	    case NFA_MOPEN + 4:
+	    case NFA_MOPEN + 5:
+	    case NFA_MOPEN + 6:
+	    case NFA_MOPEN + 7:
+	    case NFA_MOPEN + 8:
+	    case NFA_MOPEN + 9:
+		/* handled below */
+		break;
+
+	    case NFA_SKIP_CHAR:
+	    case NFA_ZSTART:
+		/* TODO: should not happen? */
+		break;
+
 	    default:	/* regular character */
+		/* TODO: put this in #ifdef later */
+		if (t->state->c < -256)
+		    EMSGN("INTERNAL: Negative state char: %ld", t->state->c);
 		result = (no_Magic(t->state->c) == c);
+
 		if (!result)
 		    result = ireg_ic == TRUE
 				&& MB_TOLOWER(t->state->c) == MB_TOLOWER(c);
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    989,
+/**/
     988,
 /**/
     987,