From f6a3fdd6848d67dc54cebb6c297f8ebdc109c3a3 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 14 Apr 2024 21:48:32 +0800 Subject: [PATCH] refactor: fix clang NonNullParamChecker warnings (#28327) --- src/nvim/CMakeLists.txt | 1 - src/nvim/regexp.c | 6 +++--- src/nvim/window.c | 2 ++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index acd002dba0..45ad738255 100644 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -844,7 +844,6 @@ add_glob_target( --checks=' -*, clang-analyzer-*, - -clang-analyzer-core.NonNullParamChecker, -clang-analyzer-core.NullDereference, -clang-analyzer-core.UndefinedBinaryOperatorResult, -clang-analyzer-core.uninitialized.Assign, diff --git a/src/nvim/regexp.c b/src/nvim/regexp.c index a81990670a..0ce911c91a 100644 --- a/src/nvim/regexp.c +++ b/src/nvim/regexp.c @@ -5320,7 +5320,7 @@ static regprog_T *bt_regcomp(uint8_t *expr, int re_flags) } // Remember whether this pattern has any \z specials in it. r->reghasz = (uint8_t)re_has_z; - scan = r->program + 1; // First BRANCH. + scan = &r->program[1]; // First BRANCH. if (OP(regnext(scan)) == END) { // Only one top-level choice. scan = OPERAND(scan); @@ -7322,7 +7322,7 @@ static int regtry(bt_regprog_T *prog, colnr_T col, proftime_T *tm, int *timed_ou // Clear the external match subpointers if necessaey. rex.need_clear_zsubexpr = (prog->reghasz == REX_SET); - if (regmatch(prog->program + 1, tm, timed_out) == 0) { + if (regmatch(&prog->program[1], tm, timed_out) == 0) { return 0; } @@ -7664,7 +7664,7 @@ static void regdump(uint8_t *pattern, bt_regprog_T *r) fprintf(f, "-------------------------------------\n\r\nregcomp(%s):\r\n", pattern); - s = r->program + 1; + s = &r->program[1]; // Loop until we find the END that isn't before a referred next (an END // can also appear in a NOMATCH operand). while (op != END || s <= end) { diff --git a/src/nvim/window.c b/src/nvim/window.c index 7389b1fe2f..9f030d2bab 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -1959,6 +1959,7 @@ int win_splitmove(win_T *wp, int size, int flags) // Remove the window and frame from the tree of frames. Don't flatten any // frames yet so we can restore things if win_split_ins fails. winframe_remove(wp, &dir, NULL, &unflat_altfr); + assert(unflat_altfr != NULL); win_remove(wp, NULL); last_status(false); // may need to remove last status line win_comp_pos(); // recompute window positions @@ -1967,6 +1968,7 @@ int win_splitmove(win_T *wp, int size, int flags) // Split a window on the desired side and put "wp" there. if (win_split_ins(size, flags, wp, dir, unflat_altfr) == NULL) { if (!wp->w_floating) { + assert(unflat_altfr != NULL); // win_split_ins doesn't change sizes or layout if it fails to insert an // existing window, so just undo winframe_remove. winframe_restore(wp, dir, unflat_altfr);