diff --git a/src/edit.c b/src/edit.c
index 6c21eee..863f1cb 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -2927,8 +2927,7 @@
     if (compl_match_array != NULL)
     {
 	pum_undisplay();
-	vim_free(compl_match_array);
-	compl_match_array = NULL;
+	vim_clear((void **)&compl_match_array);
     }
 }
 
@@ -3430,10 +3429,8 @@
     compl_T *match;
     int	    i;
 
-    vim_free(compl_pattern);
-    compl_pattern = NULL;
-    vim_free(compl_leader);
-    compl_leader = NULL;
+    vim_clear((void **)&compl_pattern);
+    vim_clear((void **)&compl_leader);
 
     if (compl_first_match == NULL)
 	return;
@@ -3465,13 +3462,10 @@
     compl_cont_status = 0;
     compl_started = FALSE;
     compl_matches = 0;
-    vim_free(compl_pattern);
-    compl_pattern = NULL;
-    vim_free(compl_leader);
-    compl_leader = NULL;
+    vim_clear((void **)&compl_pattern);
+    vim_clear((void **)&compl_leader);
     edit_submode_extra = NULL;
-    vim_free(compl_orig_text);
-    compl_orig_text = NULL;
+    vim_clear((void **)&compl_orig_text);
     compl_enter_selects = FALSE;
     /* clear v:completed_item */
     set_vim_var_dict(VV_COMPLETED_ITEM, dict_alloc_lock(VAR_FIXED));
@@ -5574,10 +5568,8 @@
 	if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
 			-1, p_ic, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
 	{
-	    vim_free(compl_pattern);
-	    compl_pattern = NULL;
-	    vim_free(compl_orig_text);
-	    compl_orig_text = NULL;
+	    vim_clear((void **)&compl_pattern);
+	    vim_clear((void **)&compl_orig_text);
 	    return FAIL;
 	}
 
@@ -7206,11 +7198,9 @@
     void
 free_last_insert(void)
 {
-    vim_free(last_insert);
-    last_insert = NULL;
+    vim_clear((void **)&last_insert);
 # ifdef FEAT_INS_EXPAND
-    vim_free(compl_orig_text);
-    compl_orig_text = NULL;
+    vim_clear((void **)&compl_orig_text);
 # endif
 }
 #endif
@@ -7838,8 +7828,7 @@
     static void
 replace_flush(void)
 {
-    vim_free(replace_stack);
-    replace_stack = NULL;
+    vim_clear((void **)&replace_stack);
     replace_stack_len = 0;
     replace_stack_nr = 0;
 }
diff --git a/src/misc2.c b/src/misc2.c
index f089051..368303e 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1836,6 +1836,19 @@
     }
 }
 
+/*
+ * Like vim_free(), and also set the pointer to NULL.
+ */
+    void
+vim_clear(void **x)
+{
+    if (*x != NULL)
+    {
+	vim_free(*x);
+	*x = NULL;
+    }
+}
+
 #ifndef HAVE_MEMSET
     void *
 vim_memset(void *ptr, int c, size_t size)
@@ -5173,8 +5186,8 @@
 	prev2 = prev1;
 	prev1 = c1;
 
-        i += MB_PTR2LEN(s1 + i);
-        j += MB_PTR2LEN(s2 + j);
+	i += MB_PTR2LEN(s1 + i);
+	j += MB_PTR2LEN(s2 + j);
     }
     return s1[i] == s2[j];
 }
@@ -5892,7 +5905,7 @@
 	    if (c2 == NUL)  /* full match */
 		return 0;
 	    s = q;
-            i = j;
+	    i = j;
 	    break;
 	}
 
diff --git a/src/proto/misc2.pro b/src/proto/misc2.pro
index 6999683..4c20a7c 100644
--- a/src/proto/misc2.pro
+++ b/src/proto/misc2.pro
@@ -46,6 +46,7 @@
 void vim_strcat(char_u *to, char_u *from, size_t tosize);
 int copy_option_part(char_u **option, char_u *buf, int maxlen, char *sep_chars);
 void vim_free(void *x);
+void vim_clear(void **x);
 int vim_stricmp(char *s1, char *s2);
 int vim_strnicmp(char *s1, char *s2, size_t len);
 char_u *vim_strchr(char_u *string, int c);
diff --git a/src/version.c b/src/version.c
index b2f1f89..0e282ab 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1481,
+/**/
     1480,
 /**/
     1479,
