]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.0.0618: NFA regex engine handles [0-z] incorrectly v8.0.0618
authorBram Moolenaar <Bram@vim.org>
Mon, 5 Jun 2017 11:30:06 +0000 (13:30 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 5 Jun 2017 11:30:06 +0000 (13:30 +0200)
Problem:    NFA regex engine handles [0-z] incorrectly.
Solution:   Return at the right point. (James McCoy, closes #1703)

src/regexp_nfa.c
src/testdir/test36.in
src/testdir/test36.ok
src/version.c

index 120861a46b575b0c9031d1ac76573993f05a41dc..c490acb710af4778dc61291509c943cf29431aef 100644 (file)
@@ -628,37 +628,39 @@ nfa_recognize_char_class(char_u *start, char_u *end, int extra_newl)
                        config |= CLASS_o9;
                        break;
                    }
-                   else
                    if (*(p + 2) == '7')
                    {
                        config |= CLASS_o7;
                        break;
                    }
+                   return FAIL;
+
                case 'a':
                    if (*(p + 2) == 'z')
                    {
                        config |= CLASS_az;
                        break;
                    }
-                   else
                    if (*(p + 2) == 'f')
                    {
                        config |= CLASS_af;
                        break;
                    }
+                   return FAIL;
+
                case 'A':
                    if (*(p + 2) == 'Z')
                    {
                        config |= CLASS_AZ;
                        break;
                    }
-                   else
                    if (*(p + 2) == 'F')
                    {
                        config |= CLASS_AF;
                        break;
                    }
-               /* FALLTHROUGH */
+                   return FAIL;
+
                default:
                    return FAIL;
            }
index 5e8ce4484a388f3a1405b74683f0e109a28adf0e..ea95ebbf24b2d5b048922cf8ce73b6dc9bca5bcb 100644 (file)
@@ -98,9 +98,15 @@ p:s/\%#=2\U//g
 p:s/\%#=0[^A-Z]//g
 p:s/\%#=1[^A-Z]//g
 p:s/\%#=2[^A-Z]//g
-p:s/\%#=0\%204l^\t...//g
-p:s/\%#=1\%205l^\t...//g
-p:s/\%#=2\%206l^\t...//g
+p:s/\%#=0\%210l^\t...//g
+p:s/\%#=1\%211l^\t...//g
+p:s/\%#=2\%212l^\t...//g
+p:s/\%#=0[0-z]//g
+p:s/\%#=1[0-z]//g
+p:s/\%#=2[0-z]//g
+p:s/\%#=0[^0-z]//g
+p:s/\%#=1[^0-z]//g
+p:s/\%#=2[^0-z]//g
 :/^start-here/+1,$wq! test.out
 ENDTEST
 
index df21ed1c5b61d5d99933dc9f02114d51c71780f2..867833bb96d6cc61b7f45636c1236c9a3b51c426 100644 (file)
@@ -97,3 +97,9 @@ ABCDEFGHIXYZ
 !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\7f\80\82\90\9b¦±¼ÇÓé
 !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\7f\80\82\90\9b¦±¼ÇÓé
 !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\7f\80\82\90\9b¦±¼ÇÓé
+       \f\r !"#$%&'()#+'-./{|}~\7f\80\82\90\9b¦±¼ÇÓé
+       \f\r !"#$%&'()#+'-./{|}~\7f\80\82\90\9b¦±¼ÇÓé
+       \f\r !"#$%&'()#+'-./{|}~\7f\80\82\90\9b¦±¼ÇÓé
+0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz
+0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz
+0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz
index 4fddbb92442d5ec3e7ca4ff55b4b02eb18d0efb8..fa8b538a8cd39fbe03737195baed12c125d0f14b 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    618,
 /**/
     617,
 /**/