neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit f1c864cfe340dbb225caaf3dcbe28ee705be9f75
parent 24fa5f70edd4cc3b613237283ee7d63af1948c16
Author: Lewis Russell <lewis6991@gmail.com>
Date:   Fri,  4 Nov 2022 10:31:09 +0000

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


Diffstat:
Msrc/nvim/linematch.c | 7+++----
Msrc/nvim/lua/xdiff.c | 4++--
2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/nvim/linematch.c b/src/nvim/linematch.c @@ -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; diff --git a/src/nvim/lua/xdiff.c b/src/nvim/lua/xdiff.c @@ -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);