updated for version 7.2a-002
diff --git a/src/eval.c b/src/eval.c
index fada51d..67880cf 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -10442,17 +10442,12 @@
 
     if (buf != NULL && varname != NULL)
     {
+	/* set curbuf to be our buf, temporarily */
+	save_curbuf = curbuf;
+	curbuf = buf;
+
 	if (*varname == '&')	/* buffer-local-option */
-	{
-	    /* set curbuf to be our buf, temporarily */
-	    save_curbuf = curbuf;
-	    curbuf = buf;
-
 	    get_option_tv(&varname, rettv, TRUE);
-
-	    /* restore previous notion of curbuf */
-	    curbuf = save_curbuf;
-	}
 	else
 	{
 	    if (*varname == NUL)
@@ -10461,10 +10456,13 @@
 		 * find_var_in_ht(). */
 		varname = (char_u *)"b:" + 2;
 	    /* look up the variable */
-	    v = find_var_in_ht(&buf->b_vars.dv_hashtab, varname, FALSE);
+	    v = find_var_in_ht(&curbuf->b_vars.dv_hashtab, varname, FALSE);
 	    if (v != NULL)
 		copy_tv(&v->di_tv, rettv);
 	}
+
+	/* restore previous notion of curbuf */
+	curbuf = save_curbuf;
     }
 
     --emsg_off;