diff --git a/src/channel.c b/src/channel.c
index abd2ce1..8a64d17 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -5275,7 +5275,7 @@
 	return;
 
     channel = get_channel_arg(&argvars[0], FALSE, FALSE, 0);
-    if (channel != NULL && rettv_dict_alloc(rettv) != FAIL)
+    if (channel != NULL && rettv_dict_alloc(rettv) == OK)
 	channel_info(channel, rettv->vval.v_dict);
 }
 
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index c3731cb..28ecaed 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -3754,7 +3754,7 @@
     else
        pat = addstar(xpc.xp_pattern, xpc.xp_pattern_len, xpc.xp_context);
 
-    if ((rettv_list_alloc(rettv) != FAIL) && (pat != NULL))
+    if (rettv_list_alloc(rettv) == OK && pat != NULL)
     {
 	int	i;
 
diff --git a/src/evalbuffer.c b/src/evalbuffer.c
index 7de7271..0808c7e 100644
--- a/src/evalbuffer.c
+++ b/src/evalbuffer.c
@@ -680,7 +680,7 @@
     int		sel_bufloaded = FALSE;
     int		sel_bufmodified = FALSE;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script()
diff --git a/src/evalfunc.c b/src/evalfunc.c
index d85e854..6335a64 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3732,7 +3732,7 @@
     extern char		**environ;
 # endif
 
-    if (rettv_dict_alloc(rettv) != OK)
+    if (rettv_dict_alloc(rettv) == FAIL)
 	return;
 
 # ifdef MSWIN
@@ -4159,7 +4159,7 @@
 	    emsg(errormsg);
 	if (rettv->v_type == VAR_LIST)
 	{
-	    if (rettv_list_alloc(rettv) != FAIL && result != NULL)
+	    if (rettv_list_alloc(rettv) == OK && result != NULL)
 		list_append_string(rettv->vval.v_list, result, -1);
 	    vim_free(result);
 	}
@@ -4182,7 +4182,7 @@
 	    if (rettv->v_type == VAR_STRING)
 		rettv->vval.v_string = ExpandOne(&xpc, s, NULL,
 							   options, WILD_ALL);
-	    else if (rettv_list_alloc(rettv) != FAIL)
+	    else if (rettv_list_alloc(rettv) == OK)
 	    {
 		int i;
 
@@ -4784,7 +4784,7 @@
     dict_T	*d;
     int		changelistindex;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_opt_buffer_arg(argvars, 0) == FAIL)
@@ -4929,7 +4929,7 @@
     static void
 f_getcharsearch(typval_T *argvars UNUSED, typval_T *rettv)
 {
-    if (rettv_dict_alloc(rettv) != FAIL)
+    if (rettv_dict_alloc(rettv) == OK)
     {
 	dict_T *dict = rettv->vval.v_dict;
 
@@ -5016,7 +5016,7 @@
     list_T	*l;
     dict_T	*d;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script()
@@ -5221,7 +5221,7 @@
 {
     win_T	*wp = curwin;			// default is current window
 
-    if (rettv_dict_alloc(rettv) != OK)
+    if (rettv_dict_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_opt_number_arg(argvars, 0) == FAIL)
@@ -7844,7 +7844,7 @@
     static void
 f_pum_getpos(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
 {
-    if (rettv_dict_alloc(rettv) != OK)
+    if (rettv_dict_alloc(rettv) == FAIL)
 	return;
     pum_set_event_info(rettv->vval.v_dict);
 }
@@ -8133,7 +8133,7 @@
     varnumber_T	stride = 1;
     int		error = FALSE;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script()
@@ -10197,7 +10197,7 @@
 
     CLEAR_FIELD(str);
 
-    if (rettv_list_alloc(rettv) != FAIL)
+    if (rettv_list_alloc(rettv) == OK)
     {
 	if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
 	    && col >= 0 && col <= (long)STRLEN(ml_get(lnum))
@@ -10258,7 +10258,7 @@
 
     if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
 	    && col >= 0 && col <= (long)STRLEN(ml_get(lnum))
-	    && rettv_list_alloc(rettv) != FAIL)
+	    && rettv_list_alloc(rettv) == OK)
     {
 	(void)syn_get_id(curwin, lnum, col, FALSE, NULL, TRUE);
 	for (i = 0; ; ++i)
@@ -10293,7 +10293,7 @@
 	if (tp != NULL)
 	    wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
     }
-    if (wp != NULL && rettv_list_alloc(rettv) != FAIL)
+    if (wp != NULL && rettv_list_alloc(rettv) == OK)
     {
 	for (; wp != NULL; wp = wp->w_next)
 	    if (list_append_number(rettv->vval.v_list,
diff --git a/src/evalwindow.c b/src/evalwindow.c
index 20ac66f..00d63cd 100644
--- a/src/evalwindow.c
+++ b/src/evalwindow.c
@@ -471,7 +471,7 @@
     dict_T	*d;
     int		tpnr = 0;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_opt_number_arg(argvars, 0) == FAIL)
@@ -510,7 +510,7 @@
     dict_T	*d;
     short	tabnr = 0, winnr;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_opt_number_arg(argvars, 0) == FAIL)
@@ -779,7 +779,7 @@
     if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL)
 	return;
 
-    if (rettv_list_alloc(rettv) != FAIL)
+    if (rettv_list_alloc(rettv) == OK)
 	win_findbuf(argvars, rettv->vval.v_list);
 }
 
@@ -847,7 +847,7 @@
     if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL)
 	return;
 
-    if (rettv_list_alloc(rettv) != FAIL)
+    if (rettv_list_alloc(rettv) == OK)
 	win_id2tabwin(argvars, rettv->vval.v_list);
 }
 
@@ -1143,7 +1143,7 @@
 {
     tabpage_T	*tp;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_opt_number_arg(argvars, 0) == FAIL)
diff --git a/src/insexpand.c b/src/insexpand.c
index 20df1b0..4a5feac 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -3089,7 +3089,7 @@
 {
     list_T	*what_list = NULL;
 
-    if (rettv_dict_alloc(rettv) != OK)
+    if (rettv_dict_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_opt_list_arg(argvars, 0) == FAIL)
diff --git a/src/job.c b/src/job.c
index 7cce611..7dbfc7d 100644
--- a/src/job.c
+++ b/src/job.c
@@ -1893,7 +1893,7 @@
 	job_T	*job;
 
 	job = get_job_arg(&argvars[0]);
-	if (job != NULL && rettv_dict_alloc(rettv) != FAIL)
+	if (job != NULL && rettv_dict_alloc(rettv) == OK)
 	    job_info(job, rettv->vval.v_dict);
     }
     else if (rettv_list_alloc(rettv) == OK)
diff --git a/src/list.c b/src/list.c
index b9a3478..10a7aac 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1762,7 +1762,7 @@
     }
 
     vimlist_remove(l, item, item2);
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     rl = rettv->vval.v_list;
diff --git a/src/map.c b/src/map.c
index 80ac8aa..9570285 100644
--- a/src/map.c
+++ b/src/map.c
@@ -2379,7 +2379,7 @@
 	}
 
     }
-    else if (rettv_dict_alloc(rettv) != FAIL && rhs != NULL)
+    else if (rettv_dict_alloc(rettv) == OK && rhs != NULL)
 	mapblock2dict(mp, rettv->vval.v_dict,
 			  did_simplify ? keys_simplified : NULL,
 			  buffer_local, abbr);
@@ -2409,7 +2409,7 @@
     if (argvars[0].v_type != VAR_UNKNOWN)
 	abbr = tv_get_bool(&argvars[0]);
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     validate_maphash();
diff --git a/src/menu.c b/src/menu.c
index 95f6fae..a588674 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -2945,7 +2945,7 @@
     vimmenu_T	*menu;
     dict_T	*retdict;
 
-    if (rettv_dict_alloc(rettv) != OK)
+    if (rettv_dict_alloc(rettv) == FAIL)
 	return;
     retdict = rettv->vval.v_dict;
 
diff --git a/src/mouse.c b/src/mouse.c
index a66c00d..2297f81 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -3099,7 +3099,7 @@
     linenr_T	lnum = 0;
     varnumber_T column = 0;
 
-    if (rettv_dict_alloc(rettv) != OK)
+    if (rettv_dict_alloc(rettv) == FAIL)
 	return;
     d = rettv->vval.v_dict;
 
diff --git a/src/move.c b/src/move.c
index 5c78d6c..5865af8 100644
--- a/src/move.c
+++ b/src/move.c
@@ -1298,7 +1298,7 @@
     int		row = 0;
     int		scol = 0, ccol = 0, ecol = 0;
 
-    if (rettv_dict_alloc(rettv) != OK)
+    if (rettv_dict_alloc(rettv) == FAIL)
 	return;
     dict = rettv->vval.v_dict;
 
diff --git a/src/sign.c b/src/sign.c
index 673d902..ee36d33 100644
--- a/src/sign.c
+++ b/src/sign.c
@@ -2335,7 +2335,7 @@
     if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_UNKNOWN)
     {
 	// Define multiple signs
-	if (rettv_list_alloc(rettv) != OK)
+	if (rettv_list_alloc(rettv) == FAIL)
 	    return;
 
 	sign_define_multiple(argvars[0].vval.v_list, rettv->vval.v_list);
@@ -2367,7 +2367,7 @@
 {
     char_u	*name = NULL;
 
-    if (rettv_list_alloc_id(rettv, aid_sign_getdefined) != OK)
+    if (rettv_list_alloc_id(rettv, aid_sign_getdefined) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_opt_string_arg(argvars, 0) == FAIL)
@@ -2393,7 +2393,7 @@
     char_u	*group = NULL;
     int		notanum = FALSE;
 
-    if (rettv_list_alloc_id(rettv, aid_sign_getplaced) != OK)
+    if (rettv_list_alloc_id(rettv, aid_sign_getplaced) == FAIL)
 	return;
 
     if (in_vim9script()
@@ -2661,7 +2661,7 @@
     listitem_T	*li;
     int		sign_id;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_list_arg(argvars, 0) == FAIL)
@@ -2721,7 +2721,7 @@
     if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_UNKNOWN)
     {
 	// Undefine multiple signs
-	if (rettv_list_alloc(rettv) != OK)
+	if (rettv_list_alloc(rettv) == FAIL)
 	    return;
 
 	sign_undefine_multiple(argvars[0].vval.v_list, rettv->vval.v_list);
@@ -2892,7 +2892,7 @@
     listitem_T	*li;
     int		retval;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_list_arg(argvars, 0) == FAIL)
diff --git a/src/term.c b/src/term.c
index 9e26eab..c40f9f5 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1470,7 +1470,7 @@
     int i;
 # endif
 
-    if (rettv_dict_alloc(rettv) != OK)
+    if (rettv_dict_alloc(rettv) == FAIL)
 	return;
 # ifdef FEAT_TERMRESPONSE
     for (i = 0; i < TPR_COUNT; ++i)
diff --git a/src/textprop.c b/src/textprop.c
index 9d3487f..9198665 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -1076,7 +1076,7 @@
 		|| check_for_opt_dict_arg(argvars, 1) == FAIL))
 	return;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     // default: get text properties on current line
diff --git a/src/time.c b/src/time.c
index d768742..4adcce5 100644
--- a/src/time.c
+++ b/src/time.c
@@ -172,7 +172,7 @@
     proftime_T	start;
     long	n1, n2;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script()
@@ -787,7 +787,7 @@
 {
     timer_T *timer = NULL;
 
-    if (rettv_list_alloc(rettv) != OK)
+    if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
     if (in_vim9script() && check_for_opt_number_arg(argvars, 0) == FAIL)
diff --git a/src/version.c b/src/version.c
index c258263..81270a3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    5107,
+/**/
     5106,
 /**/
     5105,
