From 3344cffe7bf77c984550c01f9405f4d757150d8a Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 13 Sep 2019 18:15:09 -0700 Subject: 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 --- src/nvim/syntax.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/nvim/syntax.c') 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; -- cgit From 6aae0e7c943267d2109ae20ec5086791c3b94a5e Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 13 Sep 2019 18:51:13 -0700 Subject: lint --- src/nvim/syntax.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/nvim/syntax.c') diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c index 80214feb7d..13fcad71fa 100644 --- a/src/nvim/syntax.c +++ b/src/nvim/syntax.c @@ -5048,10 +5048,10 @@ static char_u *get_syn_pattern(char_u *arg, synpat_T *ci) } else { /* yy=x+99 */ end += 4; if (*end == '+') { - ++end; + end++; *p = getdigits_int(&end, true, 0); // positive offset } else if (*end == '-') { - ++end; + end++; *p = -getdigits_int(&end, true, 0); // negative offset } } -- cgit