aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/tag.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/nvim/tag.c b/src/nvim/tag.c
index 73b5bb4058..701d2bc697 100644
--- a/src/nvim/tag.c
+++ b/src/nvim/tag.c
@@ -1143,7 +1143,15 @@ static int find_tagfunc_tags(char_u *pat, garray_T *ga, int *match_count, int fl
typval_T args[4];
typval_T rettv;
char_u flagString[4];
- taggy_T *tag = &curwin->w_tagstack[curwin->w_tagstackidx];
+ taggy_T *tag = NULL;
+
+ if (curwin->w_tagstacklen > 0) {
+ if (curwin->w_tagstackidx == curwin->w_tagstacklen) {
+ tag = &curwin->w_tagstack[curwin->w_tagstackidx - 1];
+ } else {
+ tag = &curwin->w_tagstack[curwin->w_tagstackidx];
+ }
+ }
if (*curbuf->b_p_tfu == NUL) {
return FAIL;
@@ -1156,7 +1164,7 @@ static int find_tagfunc_tags(char_u *pat, garray_T *ga, int *match_count, int fl
// create 'info' dict argument
dict_T *const d = tv_dict_alloc_lock(VAR_FIXED);
- if (tag->user_data != NULL) {
+ if (tag != NULL && tag->user_data != NULL) {
tv_dict_add_str(d, S_LEN("user_data"), (const char *)tag->user_data);
}
if (buf_ffname != NULL) {