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
This commit is contained in:
Justin M. Keyes
2019-09-13 18:15:09 -07:00
parent 0a24a2c314
commit 3344cffe7b
22 changed files with 150 additions and 113 deletions

View File

@@ -1017,7 +1017,7 @@ do_bufdel(
}
arg = p;
} else
bnr = getdigits_int(&arg);
bnr = getdigits_int(&arg, false, 0);
}
}
if (!got_int && do_current
@@ -3626,10 +3626,7 @@ int build_stl_str_hl(
// The first digit group is the item's min width
if (ascii_isdigit(*fmt_p)) {
minwid = getdigits_int(&fmt_p);
if (minwid < 0) { // overflow
minwid = 0;
}
minwid = getdigits_int(&fmt_p, false, 0);
}
// User highlight groups override the min width field
@@ -3712,10 +3709,7 @@ int build_stl_str_hl(
if (*fmt_p == '.') {
fmt_p++;
if (ascii_isdigit(*fmt_p)) {
maxwid = getdigits_int(&fmt_p);
if (maxwid <= 0) { // overflow
maxwid = 50;
}
maxwid = getdigits_int(&fmt_p, false, 50);
}
}