From 8586770e1fd83ea42bec22ae0fd6a961159cac3e Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 4 Jan 2019 02:29:11 +0100 Subject: PVS/V501: diff.c: silence warning False positive: vim_fgets has side effects. --- src/nvim/diff.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nvim/diff.c') diff --git a/src/nvim/diff.c b/src/nvim/diff.c index 2e0b198c13..c4e011d5d1 100644 --- a/src/nvim/diff.c +++ b/src/nvim/diff.c @@ -1547,7 +1547,7 @@ static void diff_read(int idx_orig, int idx_new, diffout_T *dout) } else if ((STRNCMP(line, "--- ", 4) == 0) && (vim_fgets(linebuf, LBUFLEN, fd) == 0) && (STRNCMP(line, "+++ ", 4) == 0) - && (vim_fgets(linebuf, LBUFLEN, fd) == 0) + && (vim_fgets(linebuf, LBUFLEN, fd) == 0) // -V501 && (STRNCMP(line, "@@ ", 3) == 0)) { diffstyle = DIFF_UNIFIED; } else { -- cgit From a1e97b18f1c90fb85683bd09b597511cdf14a34e Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 4 Jan 2019 02:29:17 +0100 Subject: PVS/V547: diff.c: Expression is always true --- src/nvim/diff.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/nvim/diff.c') diff --git a/src/nvim/diff.c b/src/nvim/diff.c index c4e011d5d1..0209c8251a 100644 --- a/src/nvim/diff.c +++ b/src/nvim/diff.c @@ -1565,7 +1565,8 @@ static void diff_read(int idx_orig, int idx_new, diffout_T *dout) &lnum_new, &count_new) == FAIL) { continue; } - } else if (diffstyle == DIFF_UNIFIED) { + } else { + assert(diffstyle == DIFF_UNIFIED); if (STRNCMP(line, "@@ ", 3) != 0) { continue; // not the start of a diff block } @@ -1573,9 +1574,6 @@ static void diff_read(int idx_orig, int idx_new, diffout_T *dout) &lnum_new, &count_new) == FAIL) { continue; } - } else { - EMSG(_("E959: Invalid diff format.")); - break; } // Go over blocks before the change, for which orig and new are equal. -- cgit From 6a432d4a0d48829d45b717c0ee1a1a880ef39847 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 4 Jan 2019 02:29:22 +0100 Subject: PVS/V547: diff.c: xmalloc() never returns NULL Normally we consider OOM to be fatal, but the diff module has extra functionality to handle OOM in case huge files are compared. Use try_malloc instead of xmalloc in that case. --- src/nvim/diff.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/nvim/diff.c') diff --git a/src/nvim/diff.c b/src/nvim/diff.c index 0209c8251a..e0cd285667 100644 --- a/src/nvim/diff.c +++ b/src/nvim/diff.c @@ -695,7 +695,7 @@ static int diff_write_buffer(buf_T *buf, diffin_T *din) for (lnum = 1; lnum <= buf->b_ml.ml_line_count; lnum++) { len += (long)STRLEN(ml_get_buf(buf, lnum, false)) + 1; } - ptr = xmalloc(len); + ptr = try_malloc(len); if (ptr == NULL) { // Allocating memory failed. This can happen, because we try to read // the whole buffer text into memory. Set the failed flag, the diff @@ -1088,9 +1088,6 @@ static int diff_file(diffio_T *dio) const size_t len = (strlen(tmp_orig) + strlen(tmp_new) + strlen(tmp_diff) + STRLEN(p_srr) + 27); char *const cmd = xmalloc(len); - if (cmd == NULL) { - return FAIL; - } // We don't want $DIFF_OPTIONS to get in the way. if (os_getenv("DIFF_OPTIONS")) { -- cgit