mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix PVS warnings (#18459)
* fix(PVS/V547): remove ifs that are always true or false * fix(PVS/V560): remove partial conditions that are always true * fix(PVS/V1044): suppress warning about loop break conditions * fix(PVS/V1063): suppress "modulo by 1 operation is meaningless" * fix(PVS/V568): suppress "operator evaluates the size of a pointer" Also mark vim-patch:8.2.4958 as ported.
This commit is contained in:
parent
4c7462fdb3
commit
793496aecc
@ -1153,7 +1153,7 @@ size_t aucmd_pattern_length(char *pat)
|
|||||||
|
|
||||||
char *endpat;
|
char *endpat;
|
||||||
|
|
||||||
for (; *pat; pat = (*endpat == ',' ? endpat + 1 : endpat)) {
|
for (; *pat; pat = endpat + 1) {
|
||||||
// Find end of the pattern.
|
// Find end of the pattern.
|
||||||
// Watch out for a comma in braces, like "*.\{obj,o\}".
|
// Watch out for a comma in braces, like "*.\{obj,o\}".
|
||||||
endpat = pat;
|
endpat = pat;
|
||||||
|
@ -1541,6 +1541,7 @@ void vim_str2nr(const char_u *const start, int *const prep, int *const len, cons
|
|||||||
|
|
||||||
// Do the conversion manually to avoid sscanf() quirks.
|
// Do the conversion manually to avoid sscanf() quirks.
|
||||||
abort(); // Should’ve used goto earlier.
|
abort(); // Should’ve used goto earlier.
|
||||||
|
// -V:PARSE_NUMBER:560
|
||||||
#define PARSE_NUMBER(base, cond, conv) \
|
#define PARSE_NUMBER(base, cond, conv) \
|
||||||
do { \
|
do { \
|
||||||
const char *const after_prefix = ptr; \
|
const char *const after_prefix = ptr; \
|
||||||
|
@ -10146,9 +10146,6 @@ repeat:
|
|||||||
*fnamep = xstrnsave(*fnamep, STRLEN(*fnamep) + 2);
|
*fnamep = xstrnsave(*fnamep, STRLEN(*fnamep) + 2);
|
||||||
xfree(*bufp); // free any allocated file name
|
xfree(*bufp); // free any allocated file name
|
||||||
*bufp = *fnamep;
|
*bufp = *fnamep;
|
||||||
if (*fnamep == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
add_pathsep(*fnamep);
|
add_pathsep(*fnamep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9711,26 +9711,24 @@ static void f_spellsuggest(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*curwin->w_s->b_p_spl != NUL) {
|
const char *const str = tv_get_string(&argvars[0]);
|
||||||
const char *const str = tv_get_string(&argvars[0]);
|
if (argvars[1].v_type != VAR_UNKNOWN) {
|
||||||
if (argvars[1].v_type != VAR_UNKNOWN) {
|
maxcount = tv_get_number_chk(&argvars[1], &typeerr);
|
||||||
maxcount = tv_get_number_chk(&argvars[1], &typeerr);
|
if (maxcount <= 0) {
|
||||||
if (maxcount <= 0) {
|
goto f_spellsuggest_return;
|
||||||
|
}
|
||||||
|
if (argvars[2].v_type != VAR_UNKNOWN) {
|
||||||
|
need_capital = tv_get_number_chk(&argvars[2], &typeerr);
|
||||||
|
if (typeerr) {
|
||||||
goto f_spellsuggest_return;
|
goto f_spellsuggest_return;
|
||||||
}
|
}
|
||||||
if (argvars[2].v_type != VAR_UNKNOWN) {
|
|
||||||
need_capital = tv_get_number_chk(&argvars[2], &typeerr);
|
|
||||||
if (typeerr) {
|
|
||||||
goto f_spellsuggest_return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
maxcount = 25;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
spell_suggest_list(&ga, (char_u *)str, maxcount, need_capital, false);
|
maxcount = 25;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spell_suggest_list(&ga, (char_u *)str, maxcount, need_capital, false);
|
||||||
|
|
||||||
f_spellsuggest_return:
|
f_spellsuggest_return:
|
||||||
tv_list_alloc_ret(rettv, (ptrdiff_t)ga.ga_len);
|
tv_list_alloc_ret(rettv, (ptrdiff_t)ga.ga_len);
|
||||||
for (int i = 0; i < ga.ga_len; i++) {
|
for (int i = 0; i < ga.ga_len; i++) {
|
||||||
|
@ -250,6 +250,8 @@
|
|||||||
#include "nvim/func_attr.h"
|
#include "nvim/func_attr.h"
|
||||||
#include "nvim/lib/kvec.h"
|
#include "nvim/lib/kvec.h"
|
||||||
|
|
||||||
|
// -V::1063
|
||||||
|
|
||||||
/// Dummy variable used because some macros need lvalue
|
/// Dummy variable used because some macros need lvalue
|
||||||
///
|
///
|
||||||
/// Must not be written to, if needed one must check that address of the
|
/// Must not be written to, if needed one must check that address of the
|
||||||
|
@ -1012,15 +1012,6 @@ void ex_mkrc(exarg_T *eap)
|
|||||||
emsg(_(e_prev_dir));
|
emsg(_(e_prev_dir));
|
||||||
}
|
}
|
||||||
shorten_fnames(true);
|
shorten_fnames(true);
|
||||||
// restore original dir
|
|
||||||
if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR)
|
|
||||||
|| ((ssop_flags & SSOP_CURDIR) && globaldir !=
|
|
||||||
NULL))) {
|
|
||||||
if (os_chdir((char *)dirnow) != 0) {
|
|
||||||
emsg(_(e_prev_dir));
|
|
||||||
}
|
|
||||||
shorten_fnames(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
xfree(dirnow);
|
xfree(dirnow);
|
||||||
} else {
|
} else {
|
||||||
|
@ -56,12 +56,14 @@
|
|||||||
// Returns empty string if it is NULL.
|
// Returns empty string if it is NULL.
|
||||||
#define EMPTY_IF_NULL(x) (char *)((x) ? (x) : (char_u *)"")
|
#define EMPTY_IF_NULL(x) (char *)((x) ? (x) : (char_u *)"")
|
||||||
|
|
||||||
// Adjust chars in a language according to 'langmap' option.
|
/// Adjust chars in a language according to 'langmap' option.
|
||||||
// NOTE that there is no noticeable overhead if 'langmap' is not set.
|
/// NOTE that there is no noticeable overhead if 'langmap' is not set.
|
||||||
// When set the overhead for characters < 256 is small.
|
/// When set the overhead for characters < 256 is small.
|
||||||
// Don't apply 'langmap' if the character comes from the Stuff buffer or from a
|
/// Don't apply 'langmap' if the character comes from the Stuff buffer or from a
|
||||||
// mapping and the langnoremap option was set.
|
/// mapping and the langnoremap option was set.
|
||||||
// The do-while is just to ignore a ';' after the macro.
|
/// The do-while is just to ignore a ';' after the macro.
|
||||||
|
///
|
||||||
|
/// -V:LANGMAP_ADJUST:560
|
||||||
#define LANGMAP_ADJUST(c, condition) \
|
#define LANGMAP_ADJUST(c, condition) \
|
||||||
do { \
|
do { \
|
||||||
if (*p_langmap \
|
if (*p_langmap \
|
||||||
|
@ -2170,7 +2170,7 @@ static char *qf_push_dir(char *dirbuf, struct dir_stack_T **stackptr, bool is_fi
|
|||||||
// store directory on the stack
|
// store directory on the stack
|
||||||
if (vim_isAbsName((char_u *)dirbuf)
|
if (vim_isAbsName((char_u *)dirbuf)
|
||||||
|| (*stackptr)->next == NULL
|
|| (*stackptr)->next == NULL
|
||||||
|| (*stackptr && is_file_stack)) {
|
|| is_file_stack) {
|
||||||
(*stackptr)->dirname = xstrdup(dirbuf);
|
(*stackptr)->dirname = xstrdup(dirbuf);
|
||||||
} else {
|
} else {
|
||||||
// Okay we don't have an absolute path.
|
// Okay we don't have an absolute path.
|
||||||
|
@ -36,6 +36,8 @@
|
|||||||
//
|
//
|
||||||
// Note that the rbuffer_{produced,consumed} calls are necessary or these macros
|
// Note that the rbuffer_{produced,consumed} calls are necessary or these macros
|
||||||
// create infinite loops
|
// create infinite loops
|
||||||
|
//
|
||||||
|
// -V:RBUFFER_UNTIL_EMPTY:1044
|
||||||
#define RBUFFER_UNTIL_EMPTY(buf, rptr, rcnt) \
|
#define RBUFFER_UNTIL_EMPTY(buf, rptr, rcnt) \
|
||||||
for (size_t rcnt = 0, _r = 1; _r; _r = 0) /* NOLINT(readability/braces) */ \
|
for (size_t rcnt = 0, _r = 1; _r; _r = 0) /* NOLINT(readability/braces) */ \
|
||||||
for (char *rptr = rbuffer_read_ptr(buf, &rcnt); /* NOLINT(readability/braces) */ \
|
for (char *rptr = rbuffer_read_ptr(buf, &rcnt); /* NOLINT(readability/braces) */ \
|
||||||
|
@ -637,9 +637,9 @@ static const void *tv_ptr(const typval_T *const tvs, int *const idxp)
|
|||||||
STATIC_ASSERT(OFF(v_string) == OFF(v_list)
|
STATIC_ASSERT(OFF(v_string) == OFF(v_list)
|
||||||
&& OFF(v_string) == OFF(v_dict)
|
&& OFF(v_string) == OFF(v_dict)
|
||||||
&& OFF(v_string) == OFF(v_partial)
|
&& OFF(v_string) == OFF(v_partial)
|
||||||
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_list)
|
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_list) // -V568
|
||||||
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_dict)
|
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_dict) // -V568
|
||||||
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_partial),
|
&& sizeof(tvs[0].vval.v_string) == sizeof(tvs[0].vval.v_partial), // -V568
|
||||||
"Strings, dictionaries, lists and partials are expected to be pointers, "
|
"Strings, dictionaries, lists and partials are expected to be pointers, "
|
||||||
"so that all three of them can be accessed via v_string");
|
"so that all three of them can be accessed via v_string");
|
||||||
#undef OFF
|
#undef OFF
|
||||||
|
Loading…
Reference in New Issue
Block a user