diff --git a/src/evalbuffer.c b/src/evalbuffer.c
index 5cf884a..3004415 100644
--- a/src/evalbuffer.c
+++ b/src/evalbuffer.c
@@ -364,16 +364,7 @@
     if (tv->v_type == VAR_UNKNOWN)
 	buf = curbuf;
     else
-    {
-	++emsg_off;
-	buf = tv_get_buf(tv, FALSE);
-	--emsg_off;
-	if (buf == NULL
-		&& tv->v_type != VAR_NUMBER
-		&& tv->v_type != VAR_STRING)
-	    // issue errmsg for type error
-	    (void)tv_get_number(tv);
-    }
+	buf = tv_get_buf_from_arg(tv);
     rettv->v_type = VAR_STRING;
     if (buf != NULL && buf->b_fname != NULL)
 	rettv->vval.v_string = vim_strsave(buf->b_fname);
@@ -394,13 +385,7 @@
     if (argvars[0].v_type == VAR_UNKNOWN)
 	buf = curbuf;
     else
-    {
-	if (argvars[0].v_type != VAR_STRING)
-	    (void)tv_get_number(&argvars[0]);    // issue errmsg if type error
-	++emsg_off;
-	buf = tv_get_buf(&argvars[0], FALSE);
-	--emsg_off;
-    }
+	buf = tv_get_buf_from_arg(&argvars[0]);
 
     // If the buffer isn't found and the second argument is not zero create a
     // new buffer.
@@ -425,9 +410,7 @@
     int		winnr = 0;
     buf_T	*buf;
 
-    (void)tv_get_number(&argvars[0]);	    // issue errmsg if type error
-    ++emsg_off;
-    buf = tv_get_buf(&argvars[0], TRUE);
+    buf = tv_get_buf_from_arg(&argvars[0]);
     FOR_ALL_WINDOWS(wp)
     {
 	++winnr;
@@ -435,7 +418,6 @@
 	    break;
     }
     rettv->vval.v_number = (wp != NULL ? (get_nr ? winnr : wp->w_id) : -1);
-    --emsg_off;
 }
 
 /*
@@ -662,10 +644,7 @@
     else if (argvars[0].v_type != VAR_UNKNOWN)
     {
 	// Information about one buffer.  Argument specifies the buffer
-	(void)tv_get_number(&argvars[0]);   // issue errmsg if type error
-	++emsg_off;
-	argbuf = tv_get_buf(&argvars[0], FALSE);
-	--emsg_off;
+	argbuf = tv_get_buf_from_arg(&argvars[0]);
 	if (argbuf == NULL)
 	    return;
     }
@@ -752,10 +731,7 @@
     linenr_T	end;
     buf_T	*buf;
 
-    (void)tv_get_number(&argvars[0]);	    // issue errmsg if type error
-    ++emsg_off;
-    buf = tv_get_buf(&argvars[0], FALSE);
-    --emsg_off;
+    buf = tv_get_buf_from_arg(&argvars[0]);
 
     lnum = tv_get_lnum_buf(&argvars[1], buf);
     if (argvars[2].v_type == VAR_UNKNOWN)
diff --git a/src/proto/typval.pro b/src/proto/typval.pro
index 25ad3e6..9c57226 100644
--- a/src/proto/typval.pro
+++ b/src/proto/typval.pro
@@ -29,4 +29,5 @@
 linenr_T tv_get_lnum(typval_T *argvars);
 linenr_T tv_get_lnum_buf(typval_T *argvars, buf_T *buf);
 buf_T *tv_get_buf(typval_T *tv, int curtab_only);
+buf_T *tv_get_buf_from_arg(typval_T *tv);
 /* vim: set ft=c : */
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 282d8dc..0575836 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1443,6 +1443,11 @@
   close
 enddef
 
+def Test_gebufinfo()
+  let bufinfo = getbufinfo(bufnr())
+  assert_equal(bufinfo, getbufinfo('%'))
+enddef
+
 def Fibonacci(n: number): number
   if n < 2
     return n
diff --git a/src/typval.c b/src/typval.c
index d1732f2..c7cfd41 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -1562,4 +1562,23 @@
     return buf;
 }
 
+/*
+ * Like tv_get_buf() but give an error message is the type is wrong.
+ */
+    buf_T *
+tv_get_buf_from_arg(typval_T *tv)
+{
+    buf_T *buf;
+
+    ++emsg_off;
+    buf = tv_get_buf(tv, FALSE);
+    --emsg_off;
+    if (buf == NULL
+	    && tv->v_type != VAR_NUMBER
+	    && tv->v_type != VAR_STRING)
+	// issue errmsg for type error
+	(void)tv_get_number(tv);
+    return buf;
+}
+
 #endif // FEAT_EVAL
diff --git a/src/version.c b/src/version.c
index 80c3998..f2d89f6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1562,
+/**/
     1561,
 /**/
     1560,
