mirror of
https://github.com/neovim/neovim.git
synced 2025-09-13 06:48:17 +00:00
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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user