Skip to content

Commit 8601545

Browse files
committed
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.
1 parent 360bdbd commit 8601545

2 files changed

Lines changed: 13 additions & 12 deletions

File tree

src/evalvars.c

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3461,7 +3461,6 @@ f_getwinvar(typval_T *argvars, typval_T *rettv)
34613461
f_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);

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,6 +738,8 @@ static char *(features[]) =
738738

739739
static int included_patches[] =
740740
{ /* Add new patch number below this line */
741+
/**/
742+
473,
741743
/**/
742744
472,
743745
/**/

0 commit comments

Comments
 (0)