@@ -3461,7 +3461,6 @@ f_getwinvar(typval_T *argvars, typval_T *rettv)
34613461f_getbufvar (typval_T * argvars , typval_T * rettv )
34623462{
34633463 buf_T * buf ;
3464- buf_T * save_curbuf ;
34653464 char_u * varname ;
34663465 dictitem_T * v ;
34673466 int done = FALSE;
@@ -3476,12 +3475,13 @@ f_getbufvar(typval_T *argvars, typval_T *rettv)
34763475
34773476 if (buf != NULL && varname != NULL )
34783477 {
3479- // set curbuf to be our buf, temporarily
3480- save_curbuf = curbuf ;
3481- curbuf = buf ;
3482-
34833478 if (* varname == '&' )
34843479 {
3480+ buf_T * save_curbuf = curbuf ;
3481+
3482+ // set curbuf to be our buf, temporarily
3483+ curbuf = buf ;
3484+
34853485 if (varname [1 ] == NUL )
34863486 {
34873487 // get all buffer-local options in a dict
@@ -3496,22 +3496,21 @@ f_getbufvar(typval_T *argvars, typval_T *rettv)
34963496 else if (get_option_tv (& varname , rettv , TRUE) == OK )
34973497 // buffer-local-option
34983498 done = TRUE;
3499+
3500+ // restore previous notion of curbuf
3501+ curbuf = save_curbuf ;
34993502 }
35003503 else
35013504 {
35023505 // Look up the variable.
35033506 // Let getbufvar({nr}, "") return the "b:" dictionary.
3504- v = find_var_in_ht (& curbuf -> b_vars -> dv_hashtab ,
3505- 'b' , varname , FALSE);
3507+ v = find_var_in_ht (& buf -> b_vars -> dv_hashtab , 'b' , varname , FALSE);
35063508 if (v != NULL )
35073509 {
35083510 copy_tv (& v -> di_tv , rettv );
35093511 done = TRUE;
35103512 }
35113513 }
3512-
3513- // restore previous notion of curbuf
3514- curbuf = save_curbuf ;
35153514 }
35163515
35173516 if (!done && argvars [2 ].v_type != VAR_UNKNOWN )
@@ -3618,11 +3617,11 @@ f_setbufvar(typval_T *argvars, typval_T *rettv UNUSED)
36183617 }
36193618 else
36203619 {
3621- buf_T * save_curbuf = curbuf ;
3622-
36233620 bufvarname = alloc (STRLEN (varname ) + 3 );
36243621 if (bufvarname != NULL )
36253622 {
3623+ buf_T * save_curbuf = curbuf ;
3624+
36263625 curbuf = buf ;
36273626 STRCPY (bufvarname , "b:" );
36283627 STRCPY (bufvarname + 2 , varname );
0 commit comments