diff --git a/src/evalfunc.c b/src/evalfunc.c
index a46b339..8e530f4 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1424,7 +1424,7 @@
     linenr_T	lnum;
     buf_T	*buf;
 
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL)
 	rettv->vval.v_number = 1; /* FAIL */
     else
@@ -1892,7 +1892,7 @@
  * Get buffer by number or pattern.
  */
     buf_T *
-get_buf_tv(typval_T *tv, int curtab_only)
+tv_get_buf(typval_T *tv, int curtab_only)
 {
     char_u	*name = tv->vval.v_string;
     buf_T	*buf;
@@ -1925,7 +1925,7 @@
 
     (void)tv_get_number(&argvars[0]);	    /* issue errmsg if type error */
     ++emsg_off;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     rettv->v_type = VAR_STRING;
     if (buf != NULL && buf->b_fname != NULL)
 	rettv->vval.v_string = vim_strsave(buf->b_fname);
@@ -1946,7 +1946,7 @@
 
     (void)tv_get_number(&argvars[0]);	    /* issue errmsg if type error */
     ++emsg_off;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     --emsg_off;
 
     /* If the buffer isn't found and the second argument is not zero create a
@@ -1974,7 +1974,7 @@
 
     (void)tv_get_number(&argvars[0]);	    /* issue errmsg if type error */
     ++emsg_off;
-    buf = get_buf_tv(&argvars[0], TRUE);
+    buf = tv_get_buf(&argvars[0], TRUE);
     FOR_ALL_WINDOWS(wp)
     {
 	++winnr;
@@ -2962,7 +2962,7 @@
     tabpage_T	*tp;
     win_T	*wp;
 
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL)
     {
 	rettv->vval.v_number = 1; /* FAIL */
@@ -4525,7 +4525,7 @@
 	/* Information about one buffer.  Argument specifies the buffer */
 	(void)tv_get_number(&argvars[0]);   /* issue errmsg if type error */
 	++emsg_off;
-	argbuf = get_buf_tv(&argvars[0], FALSE);
+	argbuf = tv_get_buf(&argvars[0], FALSE);
 	--emsg_off;
 	if (argbuf == NULL)
 	    return;
@@ -4609,7 +4609,7 @@
 
     (void)tv_get_number(&argvars[0]);	    /* issue errmsg if type error */
     ++emsg_off;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     --emsg_off;
 
     lnum = tv_get_lnum_buf(&argvars[1], buf);
@@ -4636,7 +4636,7 @@
     (void)tv_get_number(&argvars[0]);	    /* issue errmsg if type error */
     varname = tv_get_string_chk(&argvars[1]);
     ++emsg_off;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
 
     rettv->v_type = VAR_STRING;
     rettv->vval.v_string = NULL;
@@ -4707,7 +4707,7 @@
 #ifdef FEAT_JUMPLIST
     (void)tv_get_number(&argvars[0]);	    /* issue errmsg if type error */
     ++emsg_off;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     --emsg_off;
     if (buf == NULL)
 	return;
@@ -8721,7 +8721,7 @@
 
     if (check_secure())
 	return;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL)
 	return;
 
@@ -8750,7 +8750,7 @@
 
     if (check_secure())
 	return;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL)
 	return;
 
@@ -8778,7 +8778,7 @@
 
     if (check_secure())
 	return;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL)
 	return;
 
@@ -10580,7 +10580,7 @@
     linenr_T	lnum;
     buf_T	*buf;
 
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL)
 	rettv->vval.v_number = 1; /* FAIL */
     else
@@ -10605,7 +10605,7 @@
 	return;
     (void)tv_get_number(&argvars[0]);	    /* issue errmsg if type error */
     varname = tv_get_string_chk(&argvars[1]);
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     varp = &argvars[2];
 
     if (buf != NULL && varname != NULL && varp != NULL)
@@ -11365,7 +11365,7 @@
     if (argvars[0].v_type != VAR_UNKNOWN)
     {
 	// get signs placed in this buffer
-	buf = get_buf_tv(&argvars[0], FALSE);
+	buf = tv_get_buf(&argvars[0], FALSE);
 	if (buf == NULL)
 	{
 	    EMSG2(_("E158: Invalid buffer name: %s"),
@@ -11457,7 +11457,7 @@
 	goto cleanup;
 
     // Buffer to place the sign
-    buf = get_buf_tv(&argvars[3], FALSE);
+    buf = tv_get_buf(&argvars[3], FALSE);
     if (buf == NULL)
     {
 	EMSG2(_("E158: Invalid buffer name: %s"), tv_get_string(&argvars[2]));
@@ -11566,7 +11566,7 @@
 
 	if ((di = dict_find(dict, (char_u *)"buffer", -1)) != NULL)
 	{
-	    buf = get_buf_tv(&di->di_tv, FALSE);
+	    buf = tv_get_buf(&di->di_tv, FALSE);
 	    if (buf == NULL)
 	    {
 		EMSG2(_("E158: Invalid buffer name: %s"),
@@ -12812,7 +12812,7 @@
     buf_T	*buf;
 
     rettv->v_type = VAR_STRING;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL || buf->b_ml.ml_mfp == NULL
 					|| buf->b_ml.ml_mfp->mf_fname == NULL)
 	rettv->vval.v_string = NULL;
diff --git a/src/proto/evalfunc.pro b/src/proto/evalfunc.pro
index 0986162..c0ada9d 100644
--- a/src/proto/evalfunc.pro
+++ b/src/proto/evalfunc.pro
@@ -4,7 +4,7 @@
 int find_internal_func(char_u *name);
 int call_internal_func(char_u *name, int argcount, typval_T *argvars, typval_T *rettv);
 buf_T *buflist_find_by_name(char_u *name, int curtab_only);
-buf_T *get_buf_tv(typval_T *tv, int curtab_only);
+buf_T *tv_get_buf(typval_T *tv, int curtab_only);
 void execute_redir_str(char_u *value, int value_len);
 void mzscheme_call_vim(char_u *name, typval_T *args, typval_T *rettv);
 float_T vim_round(float_T f);
diff --git a/src/terminal.c b/src/terminal.c
index d030f6d..9fb7fb9 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -3842,7 +3842,7 @@
 
     (void)tv_get_number(&argvars[0]);	    /* issue errmsg if type error */
     ++emsg_off;
-    buf = get_buf_tv(&argvars[0], FALSE);
+    buf = tv_get_buf(&argvars[0], FALSE);
     --emsg_off;
     if (buf == NULL || buf->b_term == NULL)
     {
diff --git a/src/textprop.c b/src/textprop.c
index 578f6e9..53b43e1 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -130,7 +130,7 @@
     di = dict_find(arg->vval.v_dict, (char_u *)"bufnr", -1);
     if (di != NULL)
     {
-	*buf = get_buf_tv(&di->di_tv, FALSE);
+	*buf = tv_get_buf(&di->di_tv, FALSE);
 	if (*buf == NULL)
 	    return FAIL;
     }
@@ -533,7 +533,7 @@
     di = dict_find(dict, (char_u *)"bufnr", -1);
     if (di != NULL)
     {
-	buf = get_buf_tv(&di->di_tv, FALSE);
+	buf = tv_get_buf(&di->di_tv, FALSE);
 	if (buf == NULL)
 	    return;
     }
diff --git a/src/version.c b/src/version.c
index 0493ec4..b9fe301 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    685,
+/**/
     684,
 /**/
     683,
