aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-05-12 11:41:35 -0400
committerJames McCoy <jamessan@jamessan.com>2017-05-12 17:07:25 -0400
commit901c8fbcdb113173dd7e11adf35d193f6d4b3986 (patch)
treee40d0e7b020605af5275d5725d2b4d0ef40f38b9 /src
parent5ec72aadbf51a729969cb7f9f06cf573fc77da59 (diff)
downloadrneovim-901c8fbcdb113173dd7e11adf35d193f6d4b3986.tar.gz
rneovim-901c8fbcdb113173dd7e11adf35d193f6d4b3986.tar.bz2
rneovim-901c8fbcdb113173dd7e11adf35d193f6d4b3986.zip
regexp_nfa: Fix invalid fallthrough in character class detection
When the end character in a range matches a different standard range (e.g., [0-z]), the range would be incorrectly detected as the class of the end character (CLASS_az). Instead of using a fallthrough, immediately FAIL when the end character doesn't match the expected range.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/regexp_nfa.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/nvim/regexp_nfa.c b/src/nvim/regexp_nfa.c
index 149dca43e6..24c156d2ba 100644
--- a/src/nvim/regexp_nfa.c
+++ b/src/nvim/regexp_nfa.c
@@ -634,6 +634,7 @@ static int nfa_recognize_char_class(char_u *start, char_u *end, int extra_newl)
config |= CLASS_o7;
break;
}
+ return FAIL;
case 'a':
if (*(p + 2) == 'z') {
config |= CLASS_az;
@@ -642,6 +643,7 @@ static int nfa_recognize_char_class(char_u *start, char_u *end, int extra_newl)
config |= CLASS_af;
break;
}
+ return FAIL;
case 'A':
if (*(p + 2) == 'Z') {
config |= CLASS_AZ;
@@ -650,7 +652,7 @@ static int nfa_recognize_char_class(char_u *start, char_u *end, int extra_newl)
config |= CLASS_AF;
break;
}
- /* FALLTHROUGH */
+ return FAIL;
default:
return FAIL;
}