mirror of
https://github.com/neovim/neovim.git
synced 2025-09-20 02:08:17 +00:00
Cleanup: Refactor getdigits().
Problem : getdigits() currently returns a long, but at most places, return value is casted (unsafely) into an int. Making casts safe would introduce a lot of fuss in the form of assertions checking for limits. Note : We cannot just change return type to int, because, at some places, legitimate long values are used. For example, in diff.c, for line numbers. Solution : Introduce new functions: - get_digits() : Gets an intmax_t from a string. - get_int_digits() : Wrapper for ints. - get_long_digits() : Wrapper for longs. And replace getdigits() invocations by the appropiate wrapper invocations.
This commit is contained in:
@@ -4900,7 +4900,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(&end);
|
||||
*p = get_int_digits(&end);
|
||||
|
||||
/* "lc=" offset automatically sets "ms=" offset */
|
||||
if (!(ci->sp_off_flags & (1 << SPO_MS_OFF))) {
|
||||
@@ -4911,10 +4911,10 @@ static char_u *get_syn_pattern(char_u *arg, synpat_T *ci)
|
||||
end += 4;
|
||||
if (*end == '+') {
|
||||
++end;
|
||||
*p = getdigits(&end); /* positive offset */
|
||||
*p = get_int_digits(&end); /* positive offset */
|
||||
} else if (*end == '-') {
|
||||
++end;
|
||||
*p = -getdigits(&end); /* negative offset */
|
||||
*p = -get_int_digits(&end); /* negative offset */
|
||||
}
|
||||
}
|
||||
if (*end != ',')
|
||||
@@ -4980,7 +4980,7 @@ static void syn_cmd_sync(exarg_T *eap, int syncing)
|
||||
illegal = TRUE;
|
||||
break;
|
||||
}
|
||||
n = getdigits(&arg_end);
|
||||
n = get_long_digits(&arg_end);
|
||||
if (!eap->skip) {
|
||||
if (key[4] == 'B')
|
||||
curwin->w_s->b_syn_sync_linebreaks = n;
|
||||
|
Reference in New Issue
Block a user