Problem: "clear" macros are not always used.
Solution: Use ALLOC_ONE, VIM_CLEAR, CLEAR_POINTER and CLEAR_FIELD in more
places. (Yegappan Lakshmanan, closes #12104)
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);
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))
{
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)
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);
}
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;
// 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);
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)
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);
{
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);
{
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);
TOOLINFOW *pti;
RECT rect;
- pti = alloc(sizeof(TOOLINFOW));
+ pti = ALLOC_ONE(TOOLINFOW);
if (pti == NULL)
return;
// 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)
{
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;
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;
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;
if (l->lv_len == 0)
{
// Clearing the table.
- vim_free(cw_table);
- cw_table = NULL;
+ VIM_CLEAR(cw_table);
cw_table_size = 0;
return;
}
{
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;
#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;
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)
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)
#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;
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);
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)
if (pNtQueryEaFile(h, &iosb, ea, eainfo.EaSize, FALSE,
NULL, 0, NULL, TRUE) != STATUS_SUCCESS)
{
- vim_free(ea);
- ea = NULL;
+ VIM_CLEAR(ea);
}
}
}
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
{
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));
proftime_T start;
#endif
- vim_memset(stat, 0, sizeof(searchstat_T));
+ CLEAR_POINTER(stat);
if (dirc == 0 && !recompute && !EMPTY_POS(lastpos))
{
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
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;
}
}
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;
}
}
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);
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1391,
/**/
1390,
/**/