aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2022-11-04 10:31:09 +0000
committerGitHub <noreply@github.com>2022-11-04 10:31:09 +0000
commitf1c864cfe340dbb225caaf3dcbe28ee705be9f75 (patch)
tree15d3bcac280cbaaa6f5402c101680b2af5edc397
parent24fa5f70edd4cc3b613237283ee7d63af1948c16 (diff)
downloadrneovim-f1c864cfe340dbb225caaf3dcbe28ee705be9f75.tar.gz
rneovim-f1c864cfe340dbb225caaf3dcbe28ee705be9f75.tar.bz2
rneovim-f1c864cfe340dbb225caaf3dcbe28ee705be9f75.zip
fix(diff): remove size_t underflow (#20929)
-rw-r--r--src/nvim/linematch.c7
-rw-r--r--src/nvim/lua/xdiff.c4
2 files changed, 5 insertions, 6 deletions
diff --git a/src/nvim/linematch.c b/src/nvim/linematch.c
index ef63bd2321..04209bb836 100644
--- 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
index 428a33cdad..ec7dc3c666 100644
--- 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);