diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-09-13 18:15:09 -0700 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-09-13 19:29:25 -0700 |
commit | 3344cffe7bf77c984550c01f9405f4d757150d8a (patch) | |
tree | e60810ef33fdd5f3f43f06d5ebc503d0e0594bd3 /src/nvim/syntax.c | |
parent | 0a24a2c314a507108be754a0a2d2ed1a16ec523f (diff) | |
download | rneovim-3344cffe7bf77c984550c01f9405f4d757150d8a.tar.gz rneovim-3344cffe7bf77c984550c01f9405f4d757150d8a.tar.bz2 rneovim-3344cffe7bf77c984550c01f9405f4d757150d8a.zip |
getdigits: introduce `strict`, `def` parameters
Problem:
During a refactor long ago, we changed the `getdigits_*` familiy of
functions to abort on overflow. But this is often wrong, because many
of these codepaths are handling user input.
Solution:
Decide at each call-site whether to use "strict" mode.
fix #5555
Diffstat (limited to 'src/nvim/syntax.c')
-rw-r--r-- | src/nvim/syntax.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c index c811fae916..80214feb7d 100644 --- a/src/nvim/syntax.c +++ b/src/nvim/syntax.c @@ -5038,7 +5038,7 @@ static char_u *get_syn_pattern(char_u *arg, synpat_T *ci) ci->sp_off_flags |= (1 << idx); if (idx == SPO_LC_OFF) { /* lc=99 */ end += 3; - *p = getdigits_int(&end); + *p = getdigits_int(&end, true, 0); /* "lc=" offset automatically sets "ms=" offset */ if (!(ci->sp_off_flags & (1 << SPO_MS_OFF))) { @@ -5049,10 +5049,10 @@ static char_u *get_syn_pattern(char_u *arg, synpat_T *ci) end += 4; if (*end == '+') { ++end; - *p = getdigits_int(&end); /* positive offset */ + *p = getdigits_int(&end, true, 0); // positive offset } else if (*end == '-') { ++end; - *p = -getdigits_int(&end); /* negative offset */ + *p = -getdigits_int(&end, true, 0); // negative offset } } if (*end != ',') @@ -5118,7 +5118,7 @@ static void syn_cmd_sync(exarg_T *eap, int syncing) illegal = TRUE; break; } - n = getdigits_long(&arg_end); + n = getdigits_long(&arg_end, false, 0); if (!eap->skip) { if (key[4] == 'B') curwin->w_s->b_syn_sync_linebreaks = n; |