summaryrefslogtreecommitdiffstats
path: root/src/evalvars.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-02-12 22:50:26 +0100
committerChristian Brabandt <cb@256bit.org>2024-02-12 22:50:26 +0100
commitb47fbb40837512cdd2d8c25eaf9952154836b99d (patch)
tree061117c7cffb729024887ab621cdaf1de55b4795 /src/evalvars.c
parentbd1232a1faf56b614a1e74c4ce51bc6e0650ae00 (diff)
patch 9.1.0102: settabvar() may change the last accessed tabpagev9.1.0102
Problem: settabvar() may change the last accessed tabpage. Solution: Save and restore lastused_tabpage. (zeertzjq) closes: #14017 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Diffstat (limited to 'src/evalvars.c')
-rw-r--r--src/evalvars.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index 0a84afdaaf..856e475118 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -4843,6 +4843,7 @@ f_settabvar(typval_T *argvars, typval_T *rettv UNUSED)
{
tabpage_T *save_curtab;
tabpage_T *tp;
+ tabpage_T *save_lu_tp;
char_u *varname, *tabvarname;
typval_T *varp;
@@ -4862,6 +4863,7 @@ f_settabvar(typval_T *argvars, typval_T *rettv UNUSED)
return;
save_curtab = curtab;
+ save_lu_tp = lastused_tabpage;
goto_tabpage_tp(tp, FALSE, FALSE);
tabvarname = alloc(STRLEN(varname) + 3);
@@ -4873,9 +4875,13 @@ f_settabvar(typval_T *argvars, typval_T *rettv UNUSED)
vim_free(tabvarname);
}
- // Restore current tabpage
+ // Restore current tabpage and last accessed tabpage.
if (valid_tabpage(save_curtab))
+ {
goto_tabpage_tp(save_curtab, FALSE, FALSE);
+ if (valid_tabpage(save_lu_tp))
+ lastused_tabpage = save_lu_tp;
+ }
}
/*