diff --git a/src/eval.c b/src/eval.c
index 41f98d2..c8d84c5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -472,7 +472,6 @@
 static void f_acos(typval_T *argvars, typval_T *rettv);
 #endif
 static void f_add(typval_T *argvars, typval_T *rettv);
-static void f_alloc_fail(typval_T *argvars, typval_T *rettv);
 static void f_and(typval_T *argvars, typval_T *rettv);
 static void f_append(typval_T *argvars, typval_T *rettv);
 static void f_argc(typval_T *argvars, typval_T *rettv);
@@ -549,7 +548,6 @@
 static void f_did_filetype(typval_T *argvars, typval_T *rettv);
 static void f_diff_filler(typval_T *argvars, typval_T *rettv);
 static void f_diff_hlID(typval_T *argvars, typval_T *rettv);
-static void f_disable_char_avail_for_testing(typval_T *argvars, typval_T *rettv);
 static void f_empty(typval_T *argvars, typval_T *rettv);
 static void f_escape(typval_T *argvars, typval_T *rettv);
 static void f_eval(typval_T *argvars, typval_T *rettv);
@@ -805,6 +803,8 @@
 static void f_taglist(typval_T *argvars, typval_T *rettv);
 static void f_tagfiles(typval_T *argvars, typval_T *rettv);
 static void f_tempname(typval_T *argvars, typval_T *rettv);
+static void f_test_alloc_fail(typval_T *argvars, typval_T *rettv);
+static void f_test_disable_char_avail(typval_T *argvars, typval_T *rettv);
 static void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv);
 #ifdef FEAT_JOB_CHANNEL
 static void f_test_null_channel(typval_T *argvars, typval_T *rettv);
@@ -8344,7 +8344,6 @@
     {"acos",		1, 1, f_acos},	/* WJMc */
 #endif
     {"add",		2, 2, f_add},
-    {"alloc_fail",	3, 3, f_alloc_fail},
     {"and",		2, 2, f_and},
     {"append",		2, 2, f_append},
     {"argc",		0, 0, f_argc},
@@ -8425,7 +8424,6 @@
     {"did_filetype",	0, 0, f_did_filetype},
     {"diff_filler",	1, 1, f_diff_filler},
     {"diff_hlID",	2, 2, f_diff_hlID},
-    {"disable_char_avail_for_testing", 1, 1, f_disable_char_avail_for_testing},
     {"empty",		1, 1, f_empty},
     {"escape",		2, 2, f_escape},
     {"eval",		1, 1, f_eval},
@@ -8689,6 +8687,8 @@
     {"tanh",		1, 1, f_tanh},
 #endif
     {"tempname",	0, 0, f_tempname},
+    {"test_alloc_fail",	3, 3, f_test_alloc_fail},
+    {"test_disable_char_avail", 1, 1, f_test_disable_char_avail},
     {"test_garbagecollect_now",	0, 0, f_test_garbagecollect_now},
 #ifdef FEAT_JOB_CHANNEL
     {"test_null_channel", 0, 0, f_test_null_channel},
@@ -8949,7 +8949,7 @@
 
 	if (get_vim_var_nr(VV_TESTING))
 	{
-	    /* Prepare for calling garbagecollect_for_testing(), need to know
+	    /* Prepare for calling test_garbagecollect_now(), need to know
 	     * what variables are used on the call stack. */
 	    if (funcargs.ga_itemsize == 0)
 		ga_init2(&funcargs, (int)sizeof(typval_T *), 50);
@@ -9381,29 +9381,6 @@
 }
 
 /*
- * "alloc_fail(id, countdown, repeat)" function
- */
-    static void
-f_alloc_fail(typval_T *argvars, typval_T *rettv UNUSED)
-{
-    if (argvars[0].v_type != VAR_NUMBER
-	    || argvars[0].vval.v_number <= 0
-	    || argvars[1].v_type != VAR_NUMBER
-	    || argvars[1].vval.v_number < 0
-	    || argvars[2].v_type != VAR_NUMBER)
-	EMSG(_(e_invarg));
-    else
-    {
-	alloc_fail_id = argvars[0].vval.v_number;
-	if (alloc_fail_id >= aid_last)
-	    EMSG(_(e_invarg));
-	alloc_fail_countdown = argvars[1].vval.v_number;
-	alloc_fail_repeat = argvars[2].vval.v_number;
-	did_outofmem_msg = FALSE;
-    }
-}
-
-/*
  * "and(expr, expr)" function
  */
     static void
@@ -11115,15 +11092,6 @@
 }
 
 /*
- * "disable_char_avail_for_testing({expr})" function
- */
-    static void
-f_disable_char_avail_for_testing(typval_T *argvars, typval_T *rettv UNUSED)
-{
-    disable_char_avail_for_testing = get_tv_number(&argvars[0]);
-}
-
-/*
  * "empty({expr})" function
  */
     static void
@@ -20691,6 +20659,38 @@
 #endif
 
 /*
+ * "test_alloc_fail(id, countdown, repeat)" function
+ */
+    static void
+f_test_alloc_fail(typval_T *argvars, typval_T *rettv UNUSED)
+{
+    if (argvars[0].v_type != VAR_NUMBER
+	    || argvars[0].vval.v_number <= 0
+	    || argvars[1].v_type != VAR_NUMBER
+	    || argvars[1].vval.v_number < 0
+	    || argvars[2].v_type != VAR_NUMBER)
+	EMSG(_(e_invarg));
+    else
+    {
+	alloc_fail_id = argvars[0].vval.v_number;
+	if (alloc_fail_id >= aid_last)
+	    EMSG(_(e_invarg));
+	alloc_fail_countdown = argvars[1].vval.v_number;
+	alloc_fail_repeat = argvars[2].vval.v_number;
+	did_outofmem_msg = FALSE;
+    }
+}
+
+/*
+ * "test_disable_char_avail({expr})" function
+ */
+    static void
+f_test_disable_char_avail(typval_T *argvars, typval_T *rettv UNUSED)
+{
+    disable_char_avail_for_testing = get_tv_number(&argvars[0]);
+}
+
+/*
  * "test_garbagecollect_now()" function
  */
     static void
diff --git a/src/getchar.c b/src/getchar.c
index c771117..81cb837 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1880,7 +1880,7 @@
     int	    retval;
 
 #ifdef FEAT_EVAL
-    /* When disable_char_avail_for_testing(1) was called pretend there is no
+    /* When test_disable_char_avail(1) was called pretend there is no
      * typeahead. */
     if (disable_char_avail_for_testing)
 	return FALSE;
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index 2b38981..57edcc1 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -60,7 +60,7 @@
 
 let s:srcdir = expand('%:p:h:h')
 
-" Prepare for calling garbagecollect_for_testing().
+" Prepare for calling test_garbagecollect_now().
 let v:testing = 1
 
 " Support function: get the alloc ID by name.
diff --git a/src/testdir/test_cursor_func.vim b/src/testdir/test_cursor_func.vim
index d3236e6..4b2a9b8 100644
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -44,9 +44,9 @@
   new
   call setline(1, ['func()', '{', '}', '----'])
   autocmd! CursorMovedI * call s:Highlight_Matching_Pair()
-  call disable_char_avail_for_testing(1)
+  call test_disable_char_avail(1)
   exe "normal! 3Ga\<Down>X\<Esc>"
-  call disable_char_avail_for_testing(0)
+  call test_disable_char_avail(0)
   call assert_equal('-X---', getline(4))
   autocmd! CursorMovedI *
   quit!
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index e002303..242247d 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -280,19 +280,19 @@
 endfunction
 
 function Test_nomem()
-  call alloc_fail(GetAllocId('qf_dirname_start'), 0, 0)
+  call test_alloc_fail(GetAllocId('qf_dirname_start'), 0, 0)
   call assert_fails('vimgrep vim runtest.vim', 'E342:')
 
-  call alloc_fail(GetAllocId('qf_dirname_now'), 0, 0)
+  call test_alloc_fail(GetAllocId('qf_dirname_now'), 0, 0)
   call assert_fails('vimgrep vim runtest.vim', 'E342:')
 
-  call alloc_fail(GetAllocId('qf_namebuf'), 0, 0)
+  call test_alloc_fail(GetAllocId('qf_namebuf'), 0, 0)
   call assert_fails('cfile runtest.vim', 'E342:')
 
-  call alloc_fail(GetAllocId('qf_errmsg'), 0, 0)
+  call test_alloc_fail(GetAllocId('qf_errmsg'), 0, 0)
   call assert_fails('cfile runtest.vim', 'E342:')
 
-  call alloc_fail(GetAllocId('qf_pattern'), 0, 0)
+  call test_alloc_fail(GetAllocId('qf_pattern'), 0, 0)
   call assert_fails('cfile runtest.vim', 'E342:')
 
 endfunc
diff --git a/src/version.c b/src/version.c
index 678bf2a..8de1279 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1844,
+/**/
     1843,
 /**/
     1842,
