aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndy K. Massimino <f8a663@normed.space>2021-03-21 12:06:23 -0400
committerAndy K. Massimino <f8a663@normed.space>2021-03-21 12:06:23 -0400
commite25ebf6b4f1342719b77ced3cc79c113f3dcb41e (patch)
tree29780a02a756d722c23496734115526868530003 /src
parent6519b184716adcffa72e9ad87f6ae6d0d40f5e9f (diff)
downloadrneovim-e25ebf6b4f1342719b77ced3cc79c113f3dcb41e.tar.gz
rneovim-e25ebf6b4f1342719b77ced3cc79c113f3dcb41e.tar.bz2
rneovim-e25ebf6b4f1342719b77ced3cc79c113f3dcb41e.zip
Fix neovim tag bugs uncovered by vim-8.2.0088,
but not related to the patch. Specifically: - settagstack()'s e_listreq is in the wrong place - in :ltag, vim_strncpy -> xstrlcpy length parameter is different xstrlcpy's length includes the null terminator (so add one) - in :ltag, STRNCAT -> xstrlcat takes dest size, not number to copy use snprintf instead
Diffstat (limited to 'src')
-rw-r--r--src/nvim/eval/funcs.c2
-rw-r--r--src/nvim/tag.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index 9edf5c8f7e..5f08b53e50 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -8809,8 +8809,6 @@ static void f_settagstack(typval_T *argvars, typval_T *rettv, FunPtr fptr)
if (set_tagstack(wp, d, action) == OK) {
rettv->vval.v_number = 0;
- } else {
- EMSG(_(e_listreq));
}
}
diff --git a/src/nvim/tag.c b/src/nvim/tag.c
index aa0e93a0d5..f7a55e7a55 100644
--- a/src/nvim/tag.c
+++ b/src/nvim/tag.c
@@ -908,7 +908,7 @@ add_llist_tags(
if (len > 128) {
len = 128;
}
- xstrlcpy((char *)tag_name, (const char *)tagp.tagname, len);
+ xstrlcpy((char *)tag_name, (const char *)tagp.tagname, len + 1);
tag_name[len] = NUL;
// Save the tag file name
@@ -975,7 +975,8 @@ add_llist_tags(
if (cmd_len > (CMDBUFFSIZE - 5)) {
cmd_len = CMDBUFFSIZE - 5;
}
- xstrlcat((char *)cmd, (char *)cmd_start, cmd_len);
+ snprintf((char *)cmd + len, CMDBUFFSIZE + 1 - len,
+ "%.*s", cmd_len, cmd_start);
len += cmd_len;
if (cmd[len - 1] == '$') {
@@ -3406,6 +3407,7 @@ int set_tagstack(win_T *wp, const dict_T *d, int action)
if ((di = tv_dict_find(d, "items", -1)) != NULL) {
if (di->di_tv.v_type != VAR_LIST) {
+ EMSG(_(e_listreq));
return FAIL;
}
l = di->di_tv.vval.v_list;