f_getbufvar(typval_T *argvars, typval_T *rettv)
{
buf_T *buf;
- buf_T *save_curbuf;
char_u *varname;
dictitem_T *v;
int done = FALSE;
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
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)
}
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);