forked from aniani/vim
patch 8.2.0473: variables declared in an outer scope
Problem: Variables declared in an outer scope. Solution: Decleare variables only in the scope where they are used.
This commit is contained in:
@@ -3461,7 +3461,6 @@ f_getwinvar(typval_T *argvars, typval_T *rettv)
|
||||
f_getbufvar(typval_T *argvars, typval_T *rettv)
|
||||
{
|
||||
buf_T *buf;
|
||||
buf_T *save_curbuf;
|
||||
char_u *varname;
|
||||
dictitem_T *v;
|
||||
int done = FALSE;
|
||||
@@ -3476,12 +3475,13 @@ f_getbufvar(typval_T *argvars, typval_T *rettv)
|
||||
|
||||
if (buf != NULL && varname != NULL)
|
||||
{
|
||||
// set curbuf to be our buf, temporarily
|
||||
save_curbuf = curbuf;
|
||||
curbuf = buf;
|
||||
|
||||
if (*varname == '&')
|
||||
{
|
||||
buf_T *save_curbuf = curbuf;
|
||||
|
||||
// set curbuf to be our buf, temporarily
|
||||
curbuf = buf;
|
||||
|
||||
if (varname[1] == NUL)
|
||||
{
|
||||
// get all buffer-local options in a dict
|
||||
@@ -3496,22 +3496,21 @@ f_getbufvar(typval_T *argvars, typval_T *rettv)
|
||||
else if (get_option_tv(&varname, rettv, TRUE) == OK)
|
||||
// buffer-local-option
|
||||
done = TRUE;
|
||||
|
||||
// restore previous notion of curbuf
|
||||
curbuf = save_curbuf;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Look up the variable.
|
||||
// Let getbufvar({nr}, "") return the "b:" dictionary.
|
||||
v = find_var_in_ht(&curbuf->b_vars->dv_hashtab,
|
||||
'b', varname, FALSE);
|
||||
v = find_var_in_ht(&buf->b_vars->dv_hashtab, 'b', varname, FALSE);
|
||||
if (v != NULL)
|
||||
{
|
||||
copy_tv(&v->di_tv, rettv);
|
||||
done = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// restore previous notion of curbuf
|
||||
curbuf = save_curbuf;
|
||||
}
|
||||
|
||||
if (!done && argvars[2].v_type != VAR_UNKNOWN)
|
||||
@@ -3618,11 +3617,11 @@ f_setbufvar(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
}
|
||||
else
|
||||
{
|
||||
buf_T *save_curbuf = curbuf;
|
||||
|
||||
bufvarname = alloc(STRLEN(varname) + 3);
|
||||
if (bufvarname != NULL)
|
||||
{
|
||||
buf_T *save_curbuf = curbuf;
|
||||
|
||||
curbuf = buf;
|
||||
STRCPY(bufvarname, "b:");
|
||||
STRCPY(bufvarname + 2, varname);
|
||||
|
Reference in New Issue
Block a user