diff options
author | James McCoy <jamessan@jamessan.com> | 2017-05-12 11:41:35 -0400 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2017-05-12 17:07:25 -0400 |
commit | 901c8fbcdb113173dd7e11adf35d193f6d4b3986 (patch) | |
tree | e40d0e7b020605af5275d5725d2b4d0ef40f38b9 /src | |
parent | 5ec72aadbf51a729969cb7f9f06cf573fc77da59 (diff) | |
download | rneovim-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.c | 4 |
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; } |