diff --git a/src/buffer.c b/src/buffer.c
index ff35729..f6c1610 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2375,8 +2375,7 @@
     clear_string_option(&buf->b_p_isk);
 #ifdef FEAT_VARTABS
     clear_string_option(&buf->b_p_vsts);
-    vim_free(buf->b_p_vsts_nopaste);
-    buf->b_p_vsts_nopaste = NULL;
+    VIM_CLEAR(buf->b_p_vsts_nopaste);
     VIM_CLEAR(buf->b_p_vsts_array);
     clear_string_option(&buf->b_p_vts);
     VIM_CLEAR(buf->b_p_vts_array);
diff --git a/src/channel.c b/src/channel.c
index 33605d4..97eb5db 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -109,7 +109,7 @@
 	    size = (DWORD)todo;
 	// If the pipe overflows while the job does not read the data,
 	// WriteFile() will block forever. This abandons the write.
-	memset(&ov, 0, sizeof(ov));
+	CLEAR_FIELD(ov);
 	nwrite = 0;
 	if (!WriteFile(h, buf + done, size, &nwrite, &ov))
 	{
diff --git a/src/debugger.c b/src/debugger.c
index b158ecd..a04a078 100644
--- a/src/debugger.c
+++ b/src/debugger.c
@@ -97,14 +97,12 @@
     if (debug_oldval != NULL)
     {
 	smsg(_("Oldval = \"%s\""), debug_oldval);
-	vim_free(debug_oldval);
-	debug_oldval = NULL;
+	VIM_CLEAR(debug_oldval);
     }
     if (debug_newval != NULL)
     {
 	smsg(_("Newval = \"%s\""), debug_newval);
-	vim_free(debug_newval);
-	debug_newval = NULL;
+	VIM_CLEAR(debug_newval);
     }
     sname = estack_sfile(ESTACK_NONE);
     if (sname != NULL)
diff --git a/src/diff.c b/src/diff.c
index 6c13d2a..a46f0bf 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -726,10 +726,7 @@
 clear_diffin(diffin_T *din)
 {
     if (din->din_fname == NULL)
-    {
-	vim_free(din->din_mmfile.ptr);
-	din->din_mmfile.ptr = NULL;
-    }
+	VIM_CLEAR(din->din_mmfile.ptr);
     else
 	mch_remove(din->din_fname);
 }
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 135cb58..0f266dc 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -4354,7 +4354,7 @@
     rettv->v_type = VAR_STRING;
     cmdstr = vim_strsave(tv_get_string(&argvars[0]));
 
-    memset(&eap, 0, sizeof(eap));
+    CLEAR_FIELD(eap);
     eap.cmd = cmdstr;
     eap.arg = cmdstr;
     eap.argt |= EX_NOSPC;
diff --git a/src/fileio.c b/src/fileio.c
index 5a2e388..1966420 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4382,7 +4382,7 @@
     // file, not reset the syntax highlighting, clear marks, diff status, etc.
     // Force the fileformat and encoding to be the same.
     if (reload_options)
-	memset(&ea, 0, sizeof(ea));
+	CLEAR_FIELD(ea);
     else
 	prepped = prep_exarg(&ea, buf);
 
diff --git a/src/gui_photon.c b/src/gui_photon.c
index a17b4f5..0eb1282 100644
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -1400,7 +1400,7 @@
     char_u  *open_text = NULL;
 
     flags = 0;
-    memset(&file, 0, sizeof(file));
+    CLEAR_FIELD(file);
 
     default_path = alloc(MAXPATHL + 1 + NAME_MAX + 1);
     if (default_path != NULL)
@@ -1578,8 +1578,8 @@
 	    PtModalCtrl_t modal_ctrl;
 	    PtDialogInfo_t di;
 
-	    memset(&di, 0, sizeof(di));
-	    memset(&modal_ctrl, 0, sizeof(modal_ctrl));
+	    CLEAR_FIELD(di);
+	    CLEAR_FIELD(modal_ctrl);
 
 	    n = 0;
 	    PtSetArg(&args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0);
@@ -1707,7 +1707,7 @@
 {
     PhWindowEvent_t event;
 
-    memset(&event, 0, sizeof (event));
+    CLEAR_FIELD(event);
     event.event_f = Ph_WM_HIDE;
     event.event_state = Ph_WM_EVSTATE_HIDE;
     event.rid = PtWidgetRid(gui.vimWindow);
@@ -1723,7 +1723,7 @@
 {
     PhWindowEvent_t event;
 
-    memset(&event, 0, sizeof (event));
+    CLEAR_FIELD(event);
     event.event_f = Ph_WM_TOFRONT;
     event.event_state = Ph_WM_EVSTATE_FFRONT;
     event.rid = PtWidgetRid(gui.vimWindow);
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 206645a..7a12032 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -8387,7 +8387,7 @@
     TOOLINFOW	*pti;
     RECT	rect;
 
-    pti = alloc(sizeof(TOOLINFOW));
+    pti = ALLOC_ONE(TOOLINFOW);
     if (pti == NULL)
 	return;
 
@@ -8655,7 +8655,7 @@
 
 // TODO: at the moment, this is just a copy of test_gui_mouse_event.
 // But, we could instead generate actual Win32 mouse event messages,
-// ie. to make it consistent wih test_gui_w32_sendevent_keyboard.
+// ie. to make it consistent with test_gui_w32_sendevent_keyboard.
     static int
 test_gui_w32_sendevent_mouse(dict_T *args)
 {
diff --git a/src/hardcopy.c b/src/hardcopy.c
index f6be017..e91a7dc 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -2721,14 +2721,10 @@
     struct prt_ps_resource_S *res_cmap;
     int		retval = FALSE;
 
-    res_prolog = (struct prt_ps_resource_S *)
-				      alloc(sizeof(struct prt_ps_resource_S));
-    res_encoding = (struct prt_ps_resource_S *)
-				      alloc(sizeof(struct prt_ps_resource_S));
-    res_cidfont = (struct prt_ps_resource_S *)
-				      alloc(sizeof(struct prt_ps_resource_S));
-    res_cmap = (struct prt_ps_resource_S *)
-				      alloc(sizeof(struct prt_ps_resource_S));
+    res_prolog = ALLOC_ONE(struct prt_ps_resource_S);
+    res_encoding = ALLOC_ONE(struct prt_ps_resource_S);
+    res_cidfont = ALLOC_ONE(struct prt_ps_resource_S);
+    res_cmap = ALLOC_ONE(struct prt_ps_resource_S);
     if (res_prolog == NULL || res_encoding == NULL
 	    || res_cidfont == NULL || res_cmap == NULL)
 	goto theend;
diff --git a/src/indent.c b/src/indent.c
index be4d563..3c38b4e 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -74,8 +74,7 @@
 	if (n <= 0 || n > TABSTOP_MAX)
 	{
 	    semsg(_(e_invalid_argument_str), cp);
-	    vim_free(*array);
-	    *array = NULL;
+	    VIM_CLEAR(*array);
 	    return FAIL;
 	}
 	(*array)[t++] = n;
diff --git a/src/list.c b/src/list.c
index 7118454..ae9e3e9 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1687,7 +1687,7 @@
     list_T  *l = &sl->sl_list;
     int	    i;
 
-    memset(sl, 0, sizeof(staticList10_T));
+    CLEAR_POINTER(sl);
     l->lv_first = &sl->sl_items[0];
     l->lv_u.mat.lv_last = &sl->sl_items[9];
     l->lv_refcount = DO_NOT_FREE_CNT;
diff --git a/src/mbyte.c b/src/mbyte.c
index 5e6aed0..a9603cb 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5634,8 +5634,7 @@
     if (l->lv_len == 0)
     {
 	// Clearing the table.
-	vim_free(cw_table);
-	cw_table = NULL;
+	VIM_CLEAR(cw_table);
 	cw_table_size = 0;
 	return;
     }
diff --git a/src/option.c b/src/option.c
index f47b51c..870182b 100644
--- a/src/option.c
+++ b/src/option.c
@@ -7147,7 +7147,7 @@
 	    {
 		buf->b_p_isk = save_p_isk;
 #ifdef FEAT_VARTABS
-		if (p_vts && p_vts != empty_option && !buf->b_p_vts_array)
+		if (p_vts && *p_vts != NUL && !buf->b_p_vts_array)
 		    (void)tabstop_set(p_vts, &buf->b_p_vts_array);
 		else
 		    buf->b_p_vts_array = NULL;
@@ -7163,7 +7163,7 @@
 #ifdef FEAT_VARTABS
 		buf->b_p_vts = vim_strsave(p_vts);
 		COPY_OPT_SCTX(buf, BV_VTS);
-		if (p_vts && p_vts != empty_option && !buf->b_p_vts_array)
+		if (p_vts && *p_vts != NUL && !buf->b_p_vts_array)
 		    (void)tabstop_set(p_vts, &buf->b_p_vts_array);
 		else
 		    buf->b_p_vts_array = NULL;
diff --git a/src/optionstr.c b/src/optionstr.c
index 0389ed0..f88325c 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -2714,13 +2714,7 @@
     char_u *cp;
 
     if (!((*varp)[0]) || ((*varp)[0] == '0' && !((*varp)[1])))
-    {
-	if (curbuf->b_p_vsts_array)
-	{
-	    vim_free(curbuf->b_p_vsts_array);
-	    curbuf->b_p_vsts_array = 0;
-	}
-    }
+	VIM_CLEAR(curbuf->b_p_vsts_array);
     else
     {
 	for (cp = *varp; *cp; ++cp)
@@ -2755,13 +2749,7 @@
     char_u *cp;
 
     if (!((*varp)[0]) || ((*varp)[0] == '0' && !((*varp)[1])))
-    {
-	if (curbuf->b_p_vts_array)
-	{
-	    vim_free(curbuf->b_p_vts_array);
-	    curbuf->b_p_vts_array = NULL;
-	}
-    }
+	VIM_CLEAR(curbuf->b_p_vts_array);
     else
     {
 	for (cp = *varp; *cp; ++cp)
diff --git a/src/os_qnx.c b/src/os_qnx.c
index 4a7b363..d3ebb20 100644
--- a/src/os_qnx.c
+++ b/src/os_qnx.c
@@ -24,7 +24,7 @@
 #if defined(FEAT_GUI_PHOTON)
     PhChannelParms_t parms;
 
-    memset(&parms, 0, sizeof(parms));
+    CLEAR_FIELD(parms);
     parms.flags = Ph_DYNAMIC_BUFFER;
 
     is_photon_available = (PhAttach(NULL, &parms) != NULL) ? TRUE : FALSE;
@@ -124,7 +124,7 @@
 
 	if (text_clip && vim_clip)
 	{
-	    memset(clip_header, 0, sizeof(clip_header));
+	    CLEAR_FIELD(clip_header);
 
 	    STRNCPY(clip_header[0].type, CLIP_TYPE_VIM, 8);
 	    clip_header[0].length = sizeof(vim_clip);
diff --git a/src/os_win32.c b/src/os_win32.c
index b519bf0..c43a31a 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -3764,8 +3764,7 @@
 	if (STRLEN(p) >= (size_t)len)
 	{
 	    // long path name is too long, fall back to short one
-	    vim_free(p);
-	    p = NULL;
+	    VIM_CLEAR(p);
 	}
     }
     if (p == NULL)
@@ -8073,8 +8072,7 @@
 	    if (pNtQueryEaFile(h, &iosb, ea, eainfo.EaSize, FALSE,
 			NULL, 0, NULL, TRUE) != STATUS_SUCCESS)
 	    {
-		vim_free(ea);
-		ea = NULL;
+		VIM_CLEAR(ea);
 	    }
 	}
     }
diff --git a/src/popupwin.c b/src/popupwin.c
index c34ee9f..a0d33fd 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -3568,8 +3568,7 @@
 
     if (wp->w_popup_mask == NULL || width == 0 || height == 0)
     {
-	vim_free(wp->w_popup_mask_cells);
-	wp->w_popup_mask_cells = NULL;
+	VIM_CLEAR(wp->w_popup_mask_cells);
 	return;
     }
     if (wp->w_popup_mask_cells != NULL
diff --git a/src/quickfix.c b/src/quickfix.c
index 63dd541..13292e2 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -6213,7 +6213,7 @@
 {
     char_u	*p;
 
-    vim_memset(args, 0, sizeof(*args));
+    CLEAR_POINTER(args);
 
     args->regmatch.regprog = NULL;
     args->qf_title = vim_strsave(qf_cmdtitle(*eap->cmdlinep));
diff --git a/src/search.c b/src/search.c
index 1e4464b..74ca8fe 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3202,7 +3202,7 @@
     proftime_T  start;
 #endif
 
-    vim_memset(stat, 0, sizeof(searchstat_T));
+    CLEAR_POINTER(stat);
 
     if (dirc == 0 && !recompute && !EMPTY_POS(lastpos))
     {
diff --git a/src/syntax.c b/src/syntax.c
index a4fa249..4e35956 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6287,7 +6287,7 @@
     if (curwin->w_s == &curwin->w_buffer->b_s)
     {
 	curwin->w_s = ALLOC_ONE(synblock_T);
-	memset(curwin->w_s, 0, sizeof(synblock_T));
+	CLEAR_POINTER(curwin->w_s);
 	hash_init(&curwin->w_s->b_keywtab);
 	hash_init(&curwin->w_s->b_keywtab_ic);
 #ifdef FEAT_SPELL
diff --git a/src/textprop.c b/src/textprop.c
index bead146..c6464fc 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -1718,8 +1718,7 @@
 			if (ii < gap->ga_len)
 			{
 			    char_u **p = ((char_u **)gap->ga_data) + ii;
-			    vim_free(*p);
-			    *p = NULL;
+			    VIM_CLEAR(*p);
 			    did_remove_text = TRUE;
 			}
 		    }
diff --git a/src/userfunc.c b/src/userfunc.c
index 878e07f..3885f67 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -5155,15 +5155,13 @@
 		fudi.fd_di = dictitem_alloc(fudi.fd_newkey);
 		if (fudi.fd_di == NULL)
 		{
-		    vim_free(fp);
-		    fp = NULL;
+		    VIM_CLEAR(fp);
 		    goto erret;
 		}
 		if (dict_add(fudi.fd_dict, fudi.fd_di) == FAIL)
 		{
 		    vim_free(fudi.fd_di);
-		    vim_free(fp);
-		    fp = NULL;
+		    VIM_CLEAR(fp);
 		    goto erret;
 		}
 	    }
@@ -5292,10 +5290,7 @@
 	clear_type_list(&fp->uf_type_list);
     }
     if (free_fp)
-    {
-	vim_free(fp);
-	fp = NULL;
-    }
+	VIM_CLEAR(fp);
 ret_free:
     ga_clear_strings(&argtypes);
     vim_free(fudi.fd_newkey);
diff --git a/src/version.c b/src/version.c
index 326379c..0270abd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1391,
+/**/
     1390,
 /**/
     1389,
