aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/vars.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-11-29 21:07:29 +0800
committerGitHub <noreply@github.com>2022-11-29 21:07:29 +0800
commitd311c5481dede47d752fa39cb00d728ba18ef5bc (patch)
treedd2c01f384b4c3713a1d9c5b976cd7c0f8c91fcd /src/nvim/eval/vars.c
parent89f0987bde8124f8fcbbcbf8320dbdabe0d69ba9 (diff)
parent95f5cf96912727a1ede055211645ac9779f3da44 (diff)
downloadrneovim-d311c5481dede47d752fa39cb00d728ba18ef5bc.tar.gz
rneovim-d311c5481dede47d752fa39cb00d728ba18ef5bc.tar.bz2
rneovim-d311c5481dede47d752fa39cb00d728ba18ef5bc.zip
Merge pull request #21234 from zeertzjq/vim-9.0.0965
vim-patch:9.0.{0965,0966,0967}: using one window for executing autocommands is insufficient
Diffstat (limited to 'src/nvim/eval/vars.c')
-rw-r--r--src/nvim/eval/vars.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/nvim/eval/vars.c b/src/nvim/eval/vars.c
index 5459eac5bf..f002071ad2 100644
--- a/src/nvim/eval/vars.c
+++ b/src/nvim/eval/vars.c
@@ -1800,13 +1800,15 @@ void f_setbufvar(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
if (*varname == '&') {
aco_save_T aco;
- // set curbuf to be our buf, temporarily
+ // Set curbuf to be our buf, temporarily.
aucmd_prepbuf(&aco, buf);
+ if (curbuf == buf) {
+ // Only when it worked to set "curbuf".
+ set_option_from_tv(varname + 1, varp);
- set_option_from_tv(varname + 1, varp);
-
- // reset notion of buffer
- aucmd_restbuf(&aco);
+ // reset notion of buffer
+ aucmd_restbuf(&aco);
+ }
} else {
const size_t varname_len = strlen(varname);
char *const bufvarname = xmalloc(varname_len + 3);