diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/regexp.c | 11 | ||||
| -rw-r--r-- | src/nvim/regexp_nfa.c | 3 | 
2 files changed, 9 insertions, 5 deletions
| diff --git a/src/nvim/regexp.c b/src/nvim/regexp.c index 94c324c0e7..c4af7d9e4a 100644 --- a/src/nvim/regexp.c +++ b/src/nvim/regexp.c @@ -2234,15 +2234,18 @@ collection:                if (endc == '\\' && !reg_cpo_lit)                  endc = coll_get_char(); -              if (startc > endc) +              if (startc > endc) {                  EMSG_RET_NULL(_(e_reverse_range)); +              }                if (has_mbyte && ((*mb_char2len)(startc) > 1                                  || (*mb_char2len)(endc) > 1)) { -                /* Limit to a range of 256 chars */ -                if (endc > startc + 256) +                // Limit to a range of 256 chars +                if (endc > startc + 256) {                    EMSG_RET_NULL(_(e_large_class)); -                while (++startc <= endc) +                } +                while (++startc <= endc) {                    regmbc(startc); +                }                } else {                  while (++startc <= endc)                    regc(startc); diff --git a/src/nvim/regexp_nfa.c b/src/nvim/regexp_nfa.c index 3e4a32b178..334539b228 100644 --- a/src/nvim/regexp_nfa.c +++ b/src/nvim/regexp_nfa.c @@ -1711,8 +1711,9 @@ collection:          if (emit_range) {            endc = startc;            startc = oldstartc; -          if (startc > endc) +          if (startc > endc) {              EMSG_RET_FAIL(_(e_reverse_range)); +          }            if (endc > startc + 2) {              /* Emit a range instead of the sequence of | 
