fix(diff): remove size_t underflow (#20929)

This commit is contained in:
Lewis Russell 2022-11-04 10:31:09 +00:00 committed by GitHub
parent 24fa5f70ed
commit f1c864cfe3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 6 deletions

View File

@ -149,10 +149,9 @@ static int count_n_matched_chars(const char **sp, const size_t n, bool iwhite)
return matched_chars;
}
void fastforward_buf_to_lnum(const char **s, size_t lnum)
void fastforward_buf_to_lnum(const char **s, long lnum)
{
assert(lnum > 0);
for (size_t j = 0; j < lnum - 1; j++) {
for (long i = 0; i < lnum - 1; i++) {
*s = strchr(*s, '\n');
(*s)++;
}
@ -185,7 +184,7 @@ static void try_possible_paths(const int *df_iters, const size_t *paths, const i
if ((*choice) & (1 << k)) {
from_vals[k]--;
const char *p = diff_blk[k];
fastforward_buf_to_lnum(&p, (size_t)df_iters[k]);
fastforward_buf_to_lnum(&p, df_iters[k]);
current_lines[k] = p;
} else {
current_lines[k] = NULL;

View File

@ -60,8 +60,8 @@ static void get_linematch_results(lua_State *lstate, mmfile_t *ma, mmfile_t *mb,
const char *diff_begin[2] = { ma->ptr, mb->ptr };
int diff_length[2] = { (int)count_a, (int)count_b };
fastforward_buf_to_lnum(&diff_begin[0], (size_t)start_a);
fastforward_buf_to_lnum(&diff_begin[1], (size_t)start_b);
fastforward_buf_to_lnum(&diff_begin[0], start_a);
fastforward_buf_to_lnum(&diff_begin[1], start_b);
int *decisions = NULL;
size_t decisions_length = linematch_nbuffers(diff_begin, diff_length, 2, &decisions, iwhite);