diff --git a/src/eval.c b/src/eval.c
index 085e7d7..3cfa4b7 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -5841,13 +5841,43 @@
 }
 
 /*
+ * Mark a dict and its items with "copyID".
+ * Returns TRUE if setting references failed somehow.
+ */
+    int
+set_ref_in_dict(dict_T *d, int copyID)
+{
+    if (d != NULL && d->dv_copyID != copyID)
+    {
+	d->dv_copyID = copyID;
+	return set_ref_in_ht(&d->dv_hashtab, copyID, NULL);
+    }
+    return FALSE;
+}
+
+/*
+ * Mark a list and its items with "copyID".
+ * Returns TRUE if setting references failed somehow.
+ */
+    int
+set_ref_in_list(list_T *ll, int copyID)
+{
+    if (ll != NULL && ll->lv_copyID != copyID)
+    {
+	ll->lv_copyID = copyID;
+	return set_ref_in_list_items(ll, copyID, NULL);
+    }
+    return FALSE;
+}
+
+/*
  * Mark all lists and dicts referenced through list "l" with "copyID".
  * "ht_stack" is used to add hashtabs to be marked.  Can be NULL.
  *
  * Returns TRUE if setting references failed somehow.
  */
     int
-set_ref_in_list(list_T *l, int copyID, ht_stack_T **ht_stack)
+set_ref_in_list_items(list_T *l, int copyID, ht_stack_T **ht_stack)
 {
     listitem_T	 *li;
     int		 abort = FALSE;
@@ -5930,7 +5960,7 @@
 	    ll->lv_copyID = copyID;
 	    if (list_stack == NULL)
 	    {
-		abort = set_ref_in_list(ll, copyID, ht_stack);
+		abort = set_ref_in_list_items(ll, copyID, ht_stack);
 	    }
 	    else
 	    {
diff --git a/src/if_lua.c b/src/if_lua.c
index cfb2885..4c0eb42 100644
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -1980,31 +1980,19 @@
 	{
 	    list_T *l = (list_T *)lua_touserdata(L, 5); // key
 
-	    if (l->lv_copyID != copyID)
-	    {
-		l->lv_copyID = copyID;
-		abort = set_ref_in_list(l, copyID, NULL);
-	    }
+	    abort = set_ref_in_list(l, copyID);
 	}
 	else if (lua_rawequal(L, -1, 3)) // dict?
 	{
 	    dict_T *d = (dict_T *)lua_touserdata(L, 5); // key
 
-	    if (d->dv_copyID != copyID)
-	    {
-		d->dv_copyID = copyID;
-		abort = set_ref_in_ht(&d->dv_hashtab, copyID, NULL);
-	    }
+	    abort = set_ref_in_dict(d, copyID);
 	}
 	else if (lua_rawequal(L, -1, 4)) // funcref?
 	{
 	    luaV_Funcref *f = (luaV_Funcref *)lua_touserdata(L, 5); // key
 
-	    if (f->self != NULL && f->self->dv_copyID != copyID)
-	    {
-		f->self->dv_copyID = copyID;
-		abort = set_ref_in_ht(&f->self->dv_hashtab, copyID, NULL);
-	    }
+	    abort = set_ref_in_dict(f->self, copyID);
 	}
 	lua_pop(L, 2); // metatable and value
     }
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 5362d45..d836c7c 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -5832,23 +5832,16 @@
 set_ref_in_py(const int copyID)
 {
     pylinkedlist_T	*cur;
-    dict_T	*dd;
-    list_T	*ll;
-    int		i;
-    int		abort = FALSE;
+    list_T		*ll;
+    int			i;
+    int			abort = FALSE;
     FunctionObject	*func;
 
     if (lastdict != NULL)
     {
 	for (cur = lastdict ; !abort && cur != NULL ; cur = cur->pll_prev)
-	{
-	    dd = ((DictionaryObject *) (cur->pll_obj))->dict;
-	    if (dd->dv_copyID != copyID)
-	    {
-		dd->dv_copyID = copyID;
-		abort = abort || set_ref_in_ht(&dd->dv_hashtab, copyID, NULL);
-	    }
-	}
+	    abort = set_ref_in_dict(((DictionaryObject *)(cur->pll_obj))->dict,
+								       copyID);
     }
 
     if (lastlist != NULL)
@@ -5856,11 +5849,7 @@
 	for (cur = lastlist ; !abort && cur != NULL ; cur = cur->pll_prev)
 	{
 	    ll = ((ListObject *) (cur->pll_obj))->list;
-	    if (ll->lv_copyID != copyID)
-	    {
-		ll->lv_copyID = copyID;
-		abort = abort || set_ref_in_list(ll, copyID, NULL);
-	    }
+	    abort = set_ref_in_list(ll, copyID);
 	}
     }
 
@@ -5869,12 +5858,7 @@
 	for (cur = lastfunc ; !abort && cur != NULL ; cur = cur->pll_prev)
 	{
 	    func = (FunctionObject *) cur->pll_obj;
-	    if (func->self != NULL && func->self->dv_copyID != copyID)
-	    {
-		func->self->dv_copyID = copyID;
-		abort = abort || set_ref_in_ht(
-			&func->self->dv_hashtab, copyID, NULL);
-	    }
+	    abort = set_ref_in_dict(func->self, copyID);
 	    if (func->argc)
 		for (i = 0; !abort && i < func->argc; ++i)
 		    abort = abort
diff --git a/src/popupwin.c b/src/popupwin.c
index d675a44..f6da71d 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2297,11 +2297,7 @@
 	tv.vval.v_partial = wp->w_filter_cb.cb_partial;
 	abort = abort || set_ref_in_item(&tv, copyID, NULL, NULL);
     }
-    if (wp->w_popup_mask != NULL && wp->w_popup_mask->lv_copyID != copyID)
-    {
-	wp->w_popup_mask->lv_copyID = copyID;
-	abort = abort || set_ref_in_list(wp->w_popup_mask, copyID, NULL);
-    }
+    abort = abort || set_ref_in_list(wp->w_popup_mask, copyID);
     return abort;
 }
 
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index 5e800ad..7831eb5 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -50,7 +50,9 @@
 int get_copyID(void);
 int garbage_collect(int testing);
 int set_ref_in_ht(hashtab_T *ht, int copyID, list_stack_T **list_stack);
-int set_ref_in_list(list_T *l, int copyID, ht_stack_T **ht_stack);
+int set_ref_in_dict(dict_T *d, int copyID);
+int set_ref_in_list(list_T *ll, int copyID);
+int set_ref_in_list_items(list_T *l, int copyID, ht_stack_T **ht_stack);
 int set_ref_in_item(typval_T *tv, int copyID, ht_stack_T **ht_stack, list_stack_T **list_stack);
 char_u *echo_string_core(typval_T *tv, char_u **tofree, char_u *numbuf, int copyID, int echo_style, int restore_copyID, int composite_val);
 char_u *echo_string(typval_T *tv, char_u **tofree, char_u *numbuf, int copyID);
diff --git a/src/userfunc.c b/src/userfunc.c
index 8d1df0c..be99313 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -4000,7 +4000,7 @@
 	abort = abort
 	    || set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1, NULL)
 	    || set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID + 1, NULL)
-	    || set_ref_in_list(&fc->l_varlist, copyID + 1, NULL);
+	    || set_ref_in_list_items(&fc->l_varlist, copyID + 1, NULL);
     }
     return abort;
 }
@@ -4016,7 +4016,7 @@
 	abort = abort
 	    || set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID, NULL)
 	    || set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID, NULL)
-	    || set_ref_in_list(&fc->l_varlist, copyID, NULL)
+	    || set_ref_in_list_items(&fc->l_varlist, copyID, NULL)
 	    || set_ref_in_func(NULL, fc->func, copyID);
     }
     return abort;
diff --git a/src/version.c b/src/version.c
index 2af2912..9fec3b8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1583,
+/**/
     1582,
 /**/
     1581,
