]> granicus.if.org Git - vim/commitdiff
patch 8.2.0559: clearing a struct is verbose v8.2.0559
authorBram Moolenaar <Bram@vim.org>
Sun, 12 Apr 2020 17:37:17 +0000 (19:37 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 12 Apr 2020 17:37:17 +0000 (19:37 +0200)
Problem:    Clearing a struct is verbose.
Solution:   Define and use CLEAR_FIELD() and CLEAR_POINTER().

55 files changed:
src/blowfish.c
src/channel.c
src/charset.c
src/clipboard.c
src/diff.c
src/eval.c
src/evalfunc.c
src/ex_cmds2.c
src/ex_docmd.c
src/ex_getln.c
src/findfile.c
src/gui_gtk_f.c
src/gui_mac.c
src/gui_motif.c
src/gui_w32.c
src/gui_x11.c
src/hardcopy.c
src/hashtab.c
src/highlight.c
src/if_mzsch.c
src/if_py_both.h
src/insexpand.c
src/kword_test.c
src/list.c
src/main.c
src/map.c
src/memfile.c
src/message_test.c
src/misc1.c
src/netbeans.c
src/normal.c
src/ops.c
src/option.c
src/os_mswin.c
src/os_win32.c
src/popupmenu.c
src/quickfix.c
src/regexp.c
src/regexp_bt.c
src/regexp_nfa.c
src/search.c
src/sign.c
src/spell.c
src/spellfile.c
src/spellsuggest.c
src/syntax.c
src/tag.c
src/terminal.c
src/time.c
src/undo.c
src/userfunc.c
src/version.c
src/vim.h
src/vim9compile.c
src/vim9execute.c

index af5e2fc003436db1cddeb86dc3c93b2537316ca9..74d8e5416fb44daa6e3c784b6a33bfdb498dad83 100644 (file)
@@ -514,7 +514,7 @@ bf_self_test(void)
     UINT32_T ui = 0xffffffffUL;
     bf_state_T state;
 
-    vim_memset(&state, 0, sizeof(bf_state_T));
+    CLEAR_FIELD(state);
     state.cfb_len = BF_MAX_CFB_LEN;
 
     // We can't simply use sizeof(UINT32_T), it would generate a compiler
index 8f15c659bfcc9398e29a01cd0df6bd2a680e5bc2..0d86423b693736fd1136b1de39af4d2f7d3e70a8 100644 (file)
@@ -977,7 +977,7 @@ channel_open(
     // Get the server internet address and put into addr structure fill in the
     // socket address structure and connect to server.
 #ifdef FEAT_IPV6
-    vim_memset(&hints, 0, sizeof(hints));
+    CLEAR_FIELD(hints);
     hints.ai_family = AF_UNSPEC;
     hints.ai_socktype = SOCK_STREAM;
 # ifdef AI_ADDRCONFIG
@@ -1037,7 +1037,7 @@ channel_open(
 
     freeaddrinfo(res);
 #else
-    vim_memset((char *)&server, 0, sizeof(server));
+    CLEAR_FIELD(server);
     server.sin_family = AF_INET;
     server.sin_port = htons(port);
     if ((host = gethostbyname(hostname)) == NULL)
@@ -2514,7 +2514,7 @@ channel_exe_cmd(channel_T *channel, ch_part_T part, typval_T *argv)
        exarg_T ea;
 
        ch_log(channel, "Executing normal command '%s'", (char *)arg);
-       vim_memset(&ea, 0, sizeof(ea));
+       CLEAR_FIELD(ea);
        ea.arg = arg;
        ea.addr_count = 0;
        ea.forceit = TRUE; // no mapping
@@ -2525,7 +2525,7 @@ channel_exe_cmd(channel_T *channel, ch_part_T part, typval_T *argv)
        exarg_T ea;
 
        ch_log(channel, "redraw");
-       vim_memset(&ea, 0, sizeof(ea));
+       CLEAR_FIELD(ea);
        ea.forceit = *arg != NUL;
        ex_redraw(&ea);
        showruler(FALSE);
@@ -4793,7 +4793,7 @@ handle_io(typval_T *item, ch_part_T part, jobopt_T *opt)
     void
 clear_job_options(jobopt_T *opt)
 {
-    vim_memset(opt, 0, sizeof(jobopt_T));
+    CLEAR_POINTER(opt);
 }
 
 /*
index aa843d111a8deb8ee4f770173dcd9b47e4328951..7415c24719c03db41a453da87249e5864e705dbc 100644 (file)
@@ -127,7 +127,7 @@ buf_init_chartab(
     /*
      * Init word char flags all to FALSE
      */
-    vim_memset(buf->b_chartab, 0, (size_t)32);
+    CLEAR_FIELD(buf->b_chartab);
     if (enc_dbcs != 0)
        for (c = 0; c < 256; ++c)
        {
index e9e426f52df4757f588d8cd2b3919706dbdffed0..7a35112d2557218eab63074c2b51c097bded6149 100644 (file)
@@ -2033,7 +2033,7 @@ clip_get_selection(Clipboard_T *cbd)
        clear_oparg(&oa);
        oa.regname = (cbd == &clip_plus ? '+' : '*');
        oa.op_type = OP_YANK;
-       vim_memset(&ca, 0, sizeof(ca));
+       CLEAR_FIELD(ca);
        ca.oap = &oa;
        ca.cmdchar = 'y';
        ca.count1 = 1;
index 3d61d49d1cab1f7d17022b58a10afd3b7a64c7f0..16389fd92c59af60781eafeafaca4e52687741cc 100644 (file)
@@ -939,14 +939,14 @@ ex_diffupdate(exarg_T *eap)       // "eap" can be NULL
        goto theend;
 
     // Only use the internal method if it did not fail for one of the buffers.
-    vim_memset(&diffio, 0, sizeof(diffio));
+    CLEAR_FIELD(diffio);
     diffio.dio_internal = diff_internal() && !diff_internal_failed();
 
     diff_try_update(&diffio, idx_orig, eap);
     if (diffio.dio_internal && diff_internal_failed())
     {
        // Internal diff failed, use external diff instead.
-       vim_memset(&diffio, 0, sizeof(diffio));
+       CLEAR_FIELD(diffio);
        diff_try_update(&diffio, idx_orig, eap);
     }
 
@@ -1075,9 +1075,9 @@ diff_file_internal(diffio_T *diffio)
     xdemitconf_t    emit_cfg;
     xdemitcb_t     emit_cb;
 
-    vim_memset(&param, 0, sizeof(param));
-    vim_memset(&emit_cfg, 0, sizeof(emit_cfg));
-    vim_memset(&emit_cb, 0, sizeof(emit_cb));
+    CLEAR_FIELD(param);
+    CLEAR_FIELD(emit_cfg);
+    CLEAR_FIELD(emit_cb);
 
     param.flags = diff_algorithm;
 
index 3b789dadc674ab6813ac5d349c6ea262311df3e0..fbbae637a95b24664ba95c8283041207a20cee40 100644 (file)
@@ -234,7 +234,7 @@ eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
        s = expr->vval.v_string;
        if (s == NULL || *s == NUL)
            return FAIL;
-       vim_memset(&funcexe, 0, sizeof(funcexe));
+       CLEAR_FIELD(funcexe);
        funcexe.evaluate = TRUE;
        if (call_func(s, -1, rettv, argc, argv, &funcexe) == FAIL)
            return FAIL;
@@ -253,7 +253,7 @@ eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
            s = partial_name(partial);
            if (s == NULL || *s == NUL)
                return FAIL;
-           vim_memset(&funcexe, 0, sizeof(funcexe));
+           CLEAR_FIELD(funcexe);
            funcexe.evaluate = TRUE;
            funcexe.partial = partial;
            if (call_func(s, -1, rettv, argc, argv, &funcexe) == FAIL)
@@ -475,7 +475,7 @@ call_vim_function(
     funcexe_T  funcexe;
 
     rettv->v_type = VAR_UNKNOWN;               // clear_tv() uses this
-    vim_memset(&funcexe, 0, sizeof(funcexe));
+    CLEAR_FIELD(funcexe);
     funcexe.firstline = curwin->w_cursor.lnum;
     funcexe.lastline = curwin->w_cursor.lnum;
     funcexe.evaluate = TRUE;
@@ -649,7 +649,7 @@ get_lval(
     int                quiet = flags & GLV_QUIET;
 
     // Clear everything in "lp".
-    vim_memset(lp, 0, sizeof(lval_T));
+    CLEAR_POINTER(lp);
 
     if (skip)
     {
@@ -1715,7 +1715,7 @@ eval_func(
        funcexe_T funcexe;
 
        // Invoke the function.
-       vim_memset(&funcexe, 0, sizeof(funcexe));
+       CLEAR_FIELD(funcexe);
        funcexe.firstline = curwin->w_cursor.lnum;
        funcexe.lastline = curwin->w_cursor.lnum;
        funcexe.evaluate = evaluate;
@@ -2805,7 +2805,7 @@ call_func_rettv(
     else
        s = (char_u *)"";
 
-    vim_memset(&funcexe, 0, sizeof(funcexe));
+    CLEAR_FIELD(funcexe);
     funcexe.firstline = curwin->w_cursor.lnum;
     funcexe.lastline = curwin->w_cursor.lnum;
     funcexe.evaluate = evaluate;
@@ -5507,7 +5507,7 @@ clear_tv(typval_T *varp)
 init_tv(typval_T *varp)
 {
     if (varp != NULL)
-       vim_memset(varp, 0, sizeof(typval_T));
+       CLEAR_POINTER(varp);
 }
 
 /*
index 8ce8c8751d38bcb2e723d9c895cdab647608e8bd..4b9b4ed5ae9e2db27407d67335375e09cdbc4bd8 100644 (file)
@@ -2977,7 +2977,7 @@ f_get(typval_T *argvars, typval_T *rettv)
            pt = argvars[0].vval.v_partial;
        else
        {
-           vim_memset(&fref_pt, 0, sizeof(fref_pt));
+           CLEAR_FIELD(fref_pt);
            fref_pt.pt_name = argvars[0].vval.v_string;
            pt = &fref_pt;
        }
@@ -6530,7 +6530,7 @@ search_cmn(typval_T *argvars, pos_T *match_pos, int *flagsp)
     }
 
     pos = save_cursor = curwin->w_cursor;
-    vim_memset(&sia, 0, sizeof(sia));
+    CLEAR_FIELD(sia);
     sia.sa_stop_lnum = (linenr_T)lnum_stop;
 #ifdef FEAT_RELTIME
     sia.sa_tm = &tm;
@@ -6978,7 +6978,7 @@ do_searchpair(
     {
        searchit_arg_T sia;
 
-       vim_memset(&sia, 0, sizeof(sia));
+       CLEAR_FIELD(sia);
        sia.sa_stop_lnum = lnum_stop;
 #ifdef FEAT_RELTIME
        sia.sa_tm = &tm;
@@ -8401,7 +8401,7 @@ f_synconcealed(typval_T *argvars UNUSED, typval_T *rettv)
     lnum = tv_get_lnum(argvars);               // -1 on type error
     col = (colnr_T)tv_get_number(&argvars[1]) - 1;     // -1 on type error
 
-    vim_memset(str, NUL, sizeof(str));
+    CLEAR_FIELD(str);
 
     if (rettv_list_alloc(rettv) != FAIL)
     {
index 59f04a59a89a23f963729f42008c37a958bf715d..a0f383982f39165628430d786725bc006962eac2 100644 (file)
@@ -168,7 +168,7 @@ dialog_changed(
 
     // Init ea pseudo-structure, this is needed for the check_overwrite()
     // function.
-    vim_memset(&ea, 0, sizeof(ea));
+    CLEAR_FIELD(ea);
 
     if (ret == VIM_YES)
     {
@@ -889,7 +889,7 @@ source_pyx_file(exarg_T *eap, char_u *fname)
      * unobtrusive message.
      */
     if (eap == NULL)
-       vim_memset(&ex, 0, sizeof(ex));
+       CLEAR_FIELD(ex);
     else
        ex = *eap;
     ex.arg = fname;
index b04e2832a7738099c2c3516e9feba1bbd6fad244..d979f43efcf548e2a4be729a9d6c8ecb239faaca 100644 (file)
@@ -728,7 +728,7 @@ do_cmdline(
     if (flags & DOCMD_EXCRESET)
        save_dbg_stuff(&debug_saved);
     else
-       vim_memset(&debug_saved, 0, sizeof(debug_saved));
+       CLEAR_FIELD(debug_saved);
 
     initial_trylevel = trylevel;
 
@@ -1663,7 +1663,7 @@ do_one_cmd(
     int                starts_with_colon;
 #endif
 
-    vim_memset(&ea, 0, sizeof(ea));
+    CLEAR_FIELD(ea);
     ea.line1 = 1;
     ea.line2 = 1;
 #ifdef FEAT_EVAL
@@ -2626,7 +2626,7 @@ parse_command_modifiers(exarg_T *eap, char **errormsg, int skip_only)
 {
     char_u *p;
 
-    vim_memset(&cmdmod, 0, sizeof(cmdmod));
+    CLEAR_FIELD(cmdmod);
     eap->verbose_save = -1;
     eap->save_msg_silent = -1;
 
@@ -5631,7 +5631,7 @@ handle_drop_internal(void)
      * Move to the first file.
      */
     // Fake up a minimal "next" command for do_argfile()
-    vim_memset(&ea, 0, sizeof(ea));
+    CLEAR_FIELD(ea);
     ea.cmd = (char_u *)"next";
     do_argfile(&ea, 0);
 
@@ -5898,7 +5898,7 @@ tabpage_new(void)
 {
     exarg_T    ea;
 
-    vim_memset(&ea, 0, sizeof(ea));
+    CLEAR_FIELD(ea);
     ea.cmdidx = CMD_tabnew;
     ea.cmd = (char_u *)"tabn";
     ea.arg = (char_u *)"";
index 4b0645a504a77a87a6ab97034cfc8caa33f8855e..accedb540318c9f0f89b0c997ef282ae15ffc7e2 100644 (file)
@@ -218,7 +218,7 @@ do_incsearch_highlighting(int firstc, int *search_delim, incsearch_state_T *is_s
        return FALSE;
 
     ++emsg_off;
-    vim_memset(&ea, 0, sizeof(ea));
+    CLEAR_FIELD(ea);
     ea.line1 = 1;
     ea.line2 = 1;
     ea.cmd = ccline.cmdbuff;
@@ -459,7 +459,7 @@ may_do_incsearch_highlighting(
            search_flags += SEARCH_START;
        ccline.cmdbuff[skiplen + patlen] = NUL;
 #ifdef FEAT_RELTIME
-       vim_memset(&sia, 0, sizeof(sia));
+       CLEAR_FIELD(sia);
        sia.sa_tm = &tm;
 #endif
        found = do_search(NULL, firstc == ':' ? '/' : firstc, search_delim,
@@ -758,7 +758,7 @@ cmdline_has_arabic(int start, int len)
     void
 cmdline_init(void)
 {
-    vim_memset(&ccline, 0, sizeof(cmdline_info_T));
+    CLEAR_FIELD(ccline);
 }
 
 /*
@@ -834,7 +834,7 @@ getcmdline_int(
        did_save_ccline = TRUE;
     }
     if (init_ccline)
-       vim_memset(&ccline, 0, sizeof(cmdline_info_T));
+       CLEAR_FIELD(ccline);
 
 #ifdef FEAT_EVAL
     if (firstc == -1)
@@ -2464,7 +2464,7 @@ getcmdline_prompt(
        did_save_ccline = TRUE;
     }
 
-    vim_memset(&ccline, 0, sizeof(cmdline_info_T));
+    CLEAR_FIELD(ccline);
     ccline.cmdprompt = prompt;
     ccline.cmdattr = attr;
 # ifdef FEAT_EVAL
@@ -3504,7 +3504,7 @@ save_cmdline(cmdline_info_T *ccp)
 {
     if (!prev_ccline_used)
     {
-       vim_memset(&prev_ccline, 0, sizeof(cmdline_info_T));
+       CLEAR_FIELD(prev_ccline);
        prev_ccline_used = TRUE;
     }
     *ccp = prev_ccline;
index ba996c4546248c612d1ac9630dfb97d7530a3a6a..a6bec9788a831160629ea4c0b25a5d01bb8da864 100644 (file)
@@ -320,10 +320,9 @@ vim_findfile_init(
        search_ctx = search_ctx_arg;
     else
     {
-       search_ctx = ALLOC_ONE(ff_search_ctx_T);
+       search_ctx = ALLOC_CLEAR_ONE(ff_search_ctx_T);
        if (search_ctx == NULL)
            goto error_return;
-       vim_memset(search_ctx, 0, sizeof(ff_search_ctx_T));
     }
     search_ctx->ffsc_find_what = find_what;
     search_ctx->ffsc_tagfile = tagfile;
index ff9aee8f0541309a58b83613dd189cd796fc6717..2a9e5a087276efb46f49e6946e779dbd81fef5df 100644 (file)
@@ -223,7 +223,7 @@ gtk_form_get_type(void)
     {
        GtkTypeInfo form_info;
 
-       vim_memset(&form_info, 0, sizeof(form_info));
+       CLEAR_FIELD(form_info);
        form_info.type_name = "GtkForm";
        form_info.object_size = sizeof(GtkForm);
        form_info.class_size = sizeof(GtkFormClass);
index 875b3ecc13afc0d791eabbb19a6772ccccc53e17..b37d3f5a03b902d2f98101889674a45baab73c5f 100644 (file)
@@ -5451,7 +5451,7 @@ gui_mch_dialog(
     button = 0;
 
     // initialize the hotkey mapping
-    vim_memset(hotKeys, 0, sizeof(hotKeys));
+    CLEAR_FIELD(hotKeys);
 
     for (;*buttonChar != 0;)
     {
index 28b080a4a872c8807b193488e6ce1fe22318e87b..022626bcb07866c73d6614995360cb833432bae6 100644 (file)
@@ -1956,7 +1956,7 @@ do_mnemonic(Widget w, unsigned int keycode)
 
                    XmProcessTraversal(w, XmTRAVERSE_CURRENT);
 
-                   vim_memset((char *) &keyEvent, 0, sizeof(XKeyPressedEvent));
+                   CLEAR_FIELD(keyEvent);
                    keyEvent.type = KeyPress;
                    keyEvent.serial = 1;
                    keyEvent.send_event = True;
index 5af41059d2838670d04e0071679e911413dec820..2409ee68e472e9ab7f06f0305275e5c10aad0f8a 100644 (file)
@@ -3504,7 +3504,7 @@ gui_mch_browse(
     // Convert the filter to Windows format.
     filterp = convert_filterW(filter);
 
-    vim_memset(&fileStruct, 0, sizeof(OPENFILENAMEW));
+    CLEAR_FIELD(fileStruct);
 # ifdef OPENFILENAME_SIZE_VERSION_400W
     // be compatible with Windows NT 4.0
     fileStruct.lStructSize = OPENFILENAME_SIZE_VERSION_400W;
@@ -4267,7 +4267,7 @@ _OnMouseWheel(
        // Mouse hovers over popup window, scroll it if possible.
        mouse_row = wp->w_winrow;
        mouse_col = wp->w_wincol;
-       vim_memset(&cap, 0, sizeof(cap));
+       CLEAR_FIELD(cap);
        cap.arg = zDelta < 0 ? MSCR_UP : MSCR_DOWN;
        cap.cmdchar = zDelta < 0 ? K_MOUSEUP : K_MOUSEDOWN;
        clear_oparg(&oa);
@@ -6478,7 +6478,7 @@ gui_mch_add_menu_item(
     {
        TBBUTTON newtb;
 
-       vim_memset(&newtb, 0, sizeof(newtb));
+       CLEAR_FIELD(newtb);
        if (menu_is_separator(menu->name))
        {
            newtb.iBitmap = 0;
index ce619f654c1245b8d4ae0217e0c15239cfd8d1e5..f05de7bac88e03b27bc4757b592bd69b1475a20a 100644 (file)
@@ -2267,7 +2267,7 @@ gui_mch_get_rgb_color(int r, int g, int b)
        return (guicolor_T)available.pixel;
 #endif
     colormap = DefaultColormap(gui.dpy, DefaultScreen(gui.dpy));
-    vim_memset(&available, 0, sizeof(XColor));
+    CLEAR_FIELD(available);
     available.red = r << 8;
     available.green = g << 8;
     available.blue = b << 8;
index 36473cd48b82fcfe054599b378bb970a4e9074ed..a6df8163166f479edf63419662591848b02d08f8 100644 (file)
@@ -558,7 +558,7 @@ ex_hardcopy(exarg_T *eap)
     int                        page_line;
     int                        jobsplit;
 
-    vim_memset(&settings, 0, sizeof(prt_settings_T));
+    CLEAR_FIELD(settings);
     settings.has_color = TRUE;
 
 # ifdef FEAT_POSTSCRIPT
@@ -681,7 +681,7 @@ ex_hardcopy(exarg_T *eap)
        prt_pos_T       page_prtpos;    // print position at page start
        int             side;
 
-       vim_memset(&page_prtpos, 0, sizeof(prt_pos_T));
+       CLEAR_FIELD(page_prtpos);
        page_prtpos.file_line = eap->line1;
        prtpos = page_prtpos;
 
@@ -1844,7 +1844,7 @@ prt_open_resource(struct prt_ps_resource_S *resource)
        semsg(_("E624: Can't open file \"%s\""), resource->filename);
        return FALSE;
     }
-    vim_memset(prt_resfile.buffer, NUL, PRT_FILE_BUFFER_LEN);
+    CLEAR_FIELD(prt_resfile.buffer);
 
     // Parse first line to ensure valid resource file
     prt_resfile.len = (int)fread((char *)prt_resfile.buffer, sizeof(char_u),
index f43469fc341ed498b6ea17f2343c2318ca14bc68..816dcf79339e573d88d0f5407c9e15c46111b431 100644 (file)
@@ -65,7 +65,7 @@ hash_create(void)
 hash_init(hashtab_T *ht)
 {
     // This zeroes all "ht_" entries and all the "hi_key" in "ht_smallarray".
-    vim_memset(ht, 0, sizeof(hashtab_T));
+    CLEAR_POINTER(ht);
     ht->ht_array = ht->ht_smallarray;
     ht->ht_mask = HT_INIT_SIZE - 1;
 }
@@ -394,11 +394,12 @@ hash_may_resize(
        }
        else
            oldarray = ht->ht_array;
+       CLEAR_FIELD(ht->ht_smallarray);
     }
     else
     {
        // Allocate an array.
-       newarray = ALLOC_MULT(hashitem_T, newsize);
+       newarray = ALLOC_CLEAR_MULT(hashitem_T, newsize);
        if (newarray == NULL)
        {
            // Out of memory.  When there are NULL items still return OK.
@@ -411,7 +412,6 @@ hash_may_resize(
        }
        oldarray = ht->ht_array;
     }
-    vim_memset(newarray, 0, (size_t)(sizeof(hashitem_T) * newsize));
 
     /*
      * Move all the items from the old array to the new one, placing them in
index 9f8bfbc7f26998e5bafaf327fa34a86cb7bfae43..ee2e43754d8757680e2c6a4984a3c7dc4581e400 100644 (file)
@@ -2141,7 +2141,7 @@ get_attr_entry(garray_T *table, attrentry_T *aep)
        return 0;
 
     taep = &(((attrentry_T *)table->ga_data)[table->ga_len]);
-    vim_memset(taep, 0, sizeof(attrentry_T));
+    CLEAR_POINTER(taep);
     taep->ae_attr = aep->ae_attr;
 #ifdef FEAT_GUI
     if (table == &gui_attr_table)
@@ -2189,7 +2189,7 @@ get_cterm_attr_idx(int attr, int fg, int bg)
 {
     attrentry_T                at_en;
 
-    vim_memset(&at_en, 0, sizeof(attrentry_T));
+    CLEAR_FIELD(at_en);
 #ifdef FEAT_TERMGUICOLORS
     at_en.ae_u.cterm.fg_rgb = INVALCOLOR;
     at_en.ae_u.cterm.bg_rgb = INVALCOLOR;
@@ -2211,7 +2211,7 @@ get_tgc_attr_idx(int attr, guicolor_T fg, guicolor_T bg)
 {
     attrentry_T                at_en;
 
-    vim_memset(&at_en, 0, sizeof(attrentry_T));
+    CLEAR_FIELD(at_en);
     at_en.ae_attr = attr;
     if (fg == INVALCOLOR && bg == INVALCOLOR)
     {
@@ -2239,7 +2239,7 @@ get_gui_attr_idx(int attr, guicolor_T fg, guicolor_T bg)
 {
     attrentry_T                at_en;
 
-    vim_memset(&at_en, 0, sizeof(attrentry_T));
+    CLEAR_FIELD(at_en);
     at_en.ae_attr = attr;
     at_en.ae_u.gui.fg_color = fg;
     at_en.ae_u.gui.bg_color = bg;
@@ -2298,7 +2298,7 @@ hl_combine_attr(int char_attr, int prim_attr)
            new_en = *char_aep;
        else
        {
-           vim_memset(&new_en, 0, sizeof(new_en));
+           CLEAR_FIELD(new_en);
            new_en.ae_u.gui.fg_color = INVALCOLOR;
            new_en.ae_u.gui.bg_color = INVALCOLOR;
            new_en.ae_u.gui.sp_color = INVALCOLOR;
@@ -2341,7 +2341,7 @@ hl_combine_attr(int char_attr, int prim_attr)
            new_en = *char_aep;
        else
        {
-           vim_memset(&new_en, 0, sizeof(new_en));
+           CLEAR_FIELD(new_en);
 #ifdef FEAT_TERMGUICOLORS
            new_en.ae_u.cterm.bg_rgb = INVALCOLOR;
            new_en.ae_u.cterm.fg_rgb = INVALCOLOR;
@@ -2393,7 +2393,7 @@ hl_combine_attr(int char_attr, int prim_attr)
        new_en = *char_aep;
     else
     {
-       vim_memset(&new_en, 0, sizeof(new_en));
+       CLEAR_FIELD(new_en);
        if (char_attr <= HL_ALL)
            new_en.ae_attr = char_attr;
     }
@@ -3062,7 +3062,7 @@ syn_add_group(char_u *name)
        return 0;
     }
 
-    vim_memset(&(HL_TABLE()[highlight_ga.ga_len]), 0, sizeof(hl_group_T));
+    CLEAR_POINTER(&(HL_TABLE()[highlight_ga.ga_len]));
     HL_TABLE()[highlight_ga.ga_len].sg_name = name;
     HL_TABLE()[highlight_ga.ga_len].sg_name_u = name_up;
 #if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
@@ -3262,7 +3262,7 @@ combine_stl_hlt(
 
     if (id_alt == 0)
     {
-       vim_memset(&hlt[hlcnt + i], 0, sizeof(hl_group_T));
+       CLEAR_POINTER(&hlt[hlcnt + i]);
        hlt[hlcnt + i].sg_term = highlight_attr[hlf];
        hlt[hlcnt + i].sg_cterm = highlight_attr[hlf];
 #  if defined(FEAT_GUI) || defined(FEAT_EVAL)
@@ -3457,7 +3457,7 @@ highlight_changed(void)
     {
        // Make sure id_S is always valid to simplify code below. Use the last
        // entry.
-       vim_memset(&HL_TABLE()[hlcnt + 27], 0, sizeof(hl_group_T));
+       CLEAR_POINTER(&HL_TABLE()[hlcnt + 27]);
        HL_TABLE()[hlcnt + 18].sg_term = highlight_attr[HLF_S];
        id_S = hlcnt + 19;
     }
index 0ee922daa7a4fc85743020703aba84596ad0fd22..8cc2e21454455b0e82348f3301afbb8155a46950 100644 (file)
@@ -1927,7 +1927,7 @@ window_new(win_T *win)
 
     MZ_GC_REG();
     self = scheme_malloc_fail_ok(scheme_malloc_tagged, sizeof(vim_mz_window));
-    vim_memset(self, 0, sizeof(vim_mz_window));
+    CLEAR_POINTER(self);
 #ifndef MZ_PRECISE_GC
     scheme_dont_gc_ptr(self);  // because win isn't visible to GC
 #else
@@ -2311,7 +2311,7 @@ buffer_new(buf_T *buf)
 
     MZ_GC_REG();
     self = scheme_malloc_fail_ok(scheme_malloc_tagged, sizeof(vim_mz_buffer));
-    vim_memset(self, 0, sizeof(vim_mz_buffer));
+    CLEAR_POINTER(self);
 #ifndef MZ_PRECISE_GC
     scheme_dont_gc_ptr(self);  // because buf isn't visible to GC
 #else
@@ -2634,8 +2634,7 @@ set_buffer_line_list(void *data, int argc, Scheme_Object **argv)
            MZ_GC_VAR_IN_REG(1, rest);
            MZ_GC_REG();
 
-           array = ALLOC_MULT(char *, new_len + 1);
-           vim_memset(array, 0, (new_len+1) * sizeof(char *));
+           array = ALLOC_CLEAR_MULT(char *, new_len + 1);
 
            rest = line_list;
            for (i = 0; i < new_len; ++i)
@@ -2818,8 +2817,7 @@ insert_buffer_line_list(void *data, int argc, Scheme_Object **argv)
        MZ_GC_VAR_IN_REG(1, rest);
        MZ_GC_REG();
 
-       array = ALLOC_MULT(char *, size + 1);
-       vim_memset(array, 0, (size+1) * sizeof(char *));
+       array = ALLOC_CLEAR_MULT(char *, size + 1);
 
        rest = list;
        for (i = 0; i < size; ++i)
index 77ec4a99317aa7a6c4f4cc40f9dda410cd4e90e9..5a878bd2bd3738ed76b055be98d52bed9d2039d3 100644 (file)
@@ -3200,7 +3200,7 @@ FunctionCall(FunctionObject *self, PyObject *argsObject, PyObject *kwargs)
 
     if (self->argv || self->self)
     {
-       vim_memset(&pt, 0, sizeof(partial_T));
+       CLEAR_FIELD(pt);
        set_partial(self, &pt, FALSE);
        pt_ptr = &pt;
     }
@@ -6420,7 +6420,7 @@ static PyTypeObject CurrentType;
     static void
 init_structs(void)
 {
-    vim_memset(&OutputType, 0, sizeof(OutputType));
+    CLEAR_FIELD(OutputType);
     OutputType.tp_name = "vim.message";
     OutputType.tp_basicsize = sizeof(OutputObject);
     OutputType.tp_flags = Py_TPFLAGS_DEFAULT;
@@ -6440,7 +6440,7 @@ init_structs(void)
     // OutputType.tp_base = &PyFile_Type;
 #endif
 
-    vim_memset(&IterType, 0, sizeof(IterType));
+    CLEAR_FIELD(IterType);
     IterType.tp_name = "vim.iter";
     IterType.tp_basicsize = sizeof(IterObject);
     IterType.tp_flags = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC;
@@ -6451,7 +6451,7 @@ init_structs(void)
     IterType.tp_traverse = (traverseproc)IterTraverse;
     IterType.tp_clear = (inquiry)IterClear;
 
-    vim_memset(&BufferType, 0, sizeof(BufferType));
+    CLEAR_FIELD(BufferType);
     BufferType.tp_name = "vim.buffer";
     BufferType.tp_basicsize = sizeof(BufferType);
     BufferType.tp_dealloc = (destructor)BufferDestructor;
@@ -6472,7 +6472,7 @@ init_structs(void)
     BufferType.tp_setattr = (setattrfunc)BufferSetattr;
 #endif
 
-    vim_memset(&WindowType, 0, sizeof(WindowType));
+    CLEAR_FIELD(WindowType);
     WindowType.tp_name = "vim.window";
     WindowType.tp_basicsize = sizeof(WindowObject);
     WindowType.tp_dealloc = (destructor)WindowDestructor;
@@ -6493,7 +6493,7 @@ init_structs(void)
     WindowType.tp_setattr = (setattrfunc)WindowSetattr;
 #endif
 
-    vim_memset(&TabPageType, 0, sizeof(TabPageType));
+    CLEAR_FIELD(TabPageType);
     TabPageType.tp_name = "vim.tabpage";
     TabPageType.tp_basicsize = sizeof(TabPageObject);
     TabPageType.tp_dealloc = (destructor)TabPageDestructor;
@@ -6510,7 +6510,7 @@ init_structs(void)
     TabPageType.tp_getattr = (getattrfunc)TabPageGetattr;
 #endif
 
-    vim_memset(&BufMapType, 0, sizeof(BufMapType));
+    CLEAR_FIELD(BufMapType);
     BufMapType.tp_name = "vim.bufferlist";
     BufMapType.tp_basicsize = sizeof(BufMapObject);
     BufMapType.tp_as_mapping = &BufMapAsMapping;
@@ -6518,7 +6518,7 @@ init_structs(void)
     BufMapType.tp_iter = BufMapIter;
     BufferType.tp_doc = "vim buffer list";
 
-    vim_memset(&WinListType, 0, sizeof(WinListType));
+    CLEAR_FIELD(WinListType);
     WinListType.tp_name = "vim.windowlist";
     WinListType.tp_basicsize = sizeof(WinListType);
     WinListType.tp_as_sequence = &WinListAsSeq;
@@ -6526,14 +6526,14 @@ init_structs(void)
     WinListType.tp_doc = "vim window list";
     WinListType.tp_dealloc = (destructor)WinListDestructor;
 
-    vim_memset(&TabListType, 0, sizeof(TabListType));
+    CLEAR_FIELD(TabListType);
     TabListType.tp_name = "vim.tabpagelist";
     TabListType.tp_basicsize = sizeof(TabListType);
     TabListType.tp_as_sequence = &TabListAsSeq;
     TabListType.tp_flags = Py_TPFLAGS_DEFAULT;
     TabListType.tp_doc = "vim tab page list";
 
-    vim_memset(&RangeType, 0, sizeof(RangeType));
+    CLEAR_FIELD(RangeType);
     RangeType.tp_name = "vim.range";
     RangeType.tp_basicsize = sizeof(RangeObject);
     RangeType.tp_dealloc = (destructor)RangeDestructor;
@@ -6554,7 +6554,7 @@ init_structs(void)
     RangeType.tp_getattr = (getattrfunc)RangeGetattr;
 #endif
 
-    vim_memset(&CurrentType, 0, sizeof(CurrentType));
+    CLEAR_FIELD(CurrentType);
     CurrentType.tp_name = "vim.currentdata";
     CurrentType.tp_basicsize = sizeof(CurrentObject);
     CurrentType.tp_flags = Py_TPFLAGS_DEFAULT;
@@ -6568,7 +6568,7 @@ init_structs(void)
     CurrentType.tp_setattr = (setattrfunc)CurrentSetattr;
 #endif
 
-    vim_memset(&DictionaryType, 0, sizeof(DictionaryType));
+    CLEAR_FIELD(DictionaryType);
     DictionaryType.tp_name = "vim.dictionary";
     DictionaryType.tp_basicsize = sizeof(DictionaryObject);
     DictionaryType.tp_dealloc = (destructor)DictionaryDestructor;
@@ -6588,7 +6588,7 @@ init_structs(void)
     DictionaryType.tp_setattr = (setattrfunc)DictionarySetattr;
 #endif
 
-    vim_memset(&ListType, 0, sizeof(ListType));
+    CLEAR_FIELD(ListType);
     ListType.tp_name = "vim.list";
     ListType.tp_dealloc = (destructor)ListDestructor;
     ListType.tp_basicsize = sizeof(ListObject);
@@ -6608,7 +6608,7 @@ init_structs(void)
     ListType.tp_setattr = (setattrfunc)ListSetattr;
 #endif
 
-    vim_memset(&FunctionType, 0, sizeof(FunctionType));
+    CLEAR_FIELD(FunctionType);
     FunctionType.tp_name = "vim.function";
     FunctionType.tp_basicsize = sizeof(FunctionObject);
     FunctionType.tp_dealloc = (destructor)FunctionDestructor;
@@ -6625,7 +6625,7 @@ init_structs(void)
     FunctionType.tp_getattr = (getattrfunc)FunctionGetattr;
 #endif
 
-    vim_memset(&OptionsType, 0, sizeof(OptionsType));
+    CLEAR_FIELD(OptionsType);
     OptionsType.tp_name = "vim.options";
     OptionsType.tp_basicsize = sizeof(OptionsObject);
     OptionsType.tp_as_sequence = &OptionsAsSeq;
@@ -6638,7 +6638,7 @@ init_structs(void)
     OptionsType.tp_clear = (inquiry)OptionsClear;
 
 #if PY_VERSION_HEX < 0x030700f0
-    vim_memset(&LoaderType, 0, sizeof(LoaderType));
+    CLEAR_FIELD(LoaderType);
     LoaderType.tp_name = "vim.Loader";
     LoaderType.tp_basicsize = sizeof(LoaderObject);
     LoaderType.tp_flags = Py_TPFLAGS_DEFAULT;
@@ -6648,7 +6648,7 @@ init_structs(void)
 #endif
 
 #if PY_MAJOR_VERSION >= 3
-    vim_memset(&vimmodule, 0, sizeof(vimmodule));
+    CLEAR_FIELD(vimmodule);
     vimmodule.m_name = "vim";
     vimmodule.m_doc = "Vim Python interface\n";
     vimmodule.m_size = -1;
index 259acb91a5bd31b36d395be4807781ea953e51ad..0278522684b8db09015e36cf2c03b7b6cea6c23f 100644 (file)
@@ -2313,7 +2313,7 @@ ins_compl_add_tv(typval_T *tv, int dir)
     else
     {
        word = tv_get_string_chk(tv);
-       vim_memset(cptext, 0, sizeof(cptext));
+       CLEAR_FIELD(cptext);
     }
     if (word == NULL || (!empty && *word == NUL))
        return FAIL;
index 92ea052bb8e9cc2ce12ab761d10c0e214b71fd23..5d509fcf86cade0a198f5ed73b5863b76ef18004 100644 (file)
@@ -30,7 +30,7 @@ test_isword_funcs_utf8(void)
     buf_T buf;
     int c;
 
-    vim_memset(&buf, 0, sizeof(buf));
+    CLEAR_FIELD(buf);
     p_enc = (char_u *)"utf-8";
     p_isi = (char_u *)"";
     p_isp = (char_u *)"";
index 451e58591095b67b6b8dcb2af355b6467cad663c..dfd370b544e27ed87e147cd95ce89273a655906b 100644 (file)
@@ -1443,7 +1443,7 @@ item_compare2(const void *s1, const void *s2)
     copy_tv(&si2->item->li_tv, &argv[1]);
 
     rettv.v_type = VAR_UNKNOWN;                // clear_tv() uses this
-    vim_memset(&funcexe, 0, sizeof(funcexe));
+    CLEAR_FIELD(funcexe);
     funcexe.evaluate = TRUE;
     funcexe.partial = partial;
     funcexe.selfdict = sortinfo->item_compare_selfdict;
index e8984ee597ab632189a3326d04070f957ba3cfa5..a65392f77209489666c9c5990f81a5185b161c20 100644 (file)
@@ -119,7 +119,7 @@ main
     // Many variables are in "params" so that we can pass them to invoked
     // functions without a lot of arguments.  "argc" and "argv" are also
     // copied, so that they can be changed.
-    vim_memset(&params, 0, sizeof(params));
+    CLEAR_FIELD(params);
     params.argc = argc;
     params.argv = argv;
     params.want_full_screen = TRUE;
index 9bc9abca3aae705d0fd0a60e89df8366e71b662a..85c46a52bbe072c6dea455e0e1bcb03690aee584 100644 (file)
--- a/src/map.c
+++ b/src/map.c
@@ -65,7 +65,7 @@ validate_maphash(void)
 {
     if (!maphash_valid)
     {
-       vim_memset(maphash, 0, sizeof(maphash));
+       CLEAR_FIELD(maphash);
        maphash_valid = TRUE;
     }
 }
index 0d167e6b0dd356ef81fcb9a5b036fa21b89a37e1..4fe329439e7c9381502ba426ffa5496e89ceb287 100644 (file)
@@ -1337,7 +1337,7 @@ mf_do_open(
     static void
 mf_hash_init(mf_hashtab_T *mht)
 {
-    vim_memset(mht, 0, sizeof(mf_hashtab_T));
+    CLEAR_POINTER(mht);
     mht->mht_buckets = mht->mht_small_buckets;
     mht->mht_mask = MHT_INIT_SIZE - 1;
 }
@@ -1480,7 +1480,7 @@ mf_hash_grow(mf_hashtab_T *mht)
         * a power of two.
         */
 
-       vim_memset(tails, 0, sizeof(tails));
+       CLEAR_FIELD(tails);
 
        for (mhi = mht->mht_buckets[i]; mhi != NULL; mhi = mhi->mhi_next)
        {
index 7f6540b310105a7264218cf5cef333f944f639d4..014d8d9d45314172e5f008dd801ffc03d4946f2b 100644 (file)
@@ -269,7 +269,7 @@ test_vim_snprintf(void)
     int
 main(int argc, char **argv)
 {
-    vim_memset(&params, 0, sizeof(params));
+    CLEAR_FIELD(params);
     params.argc = argc;
     params.argv = argv;
     common_init(&params);
index b4b74f7ef5a35802a0e6bebea4843cacceeb91dd..92aa82fc4227f2a01fbb74730b2a9eec34ed8a8e 100644 (file)
@@ -631,7 +631,7 @@ f_mode(typval_T *argvars, typval_T *rettv)
 {
     char_u     buf[4];
 
-    vim_memset(buf, 0, sizeof(buf));
+    CLEAR_FIELD(buf);
 
     if (time_for_testing == 93784)
     {
index 4d79a2eafadd62343126ecde884e3eaa762fb575..4ff9085d8086193bb5672f8ae8813c80d9bcc2ec 100644 (file)
@@ -1547,7 +1547,7 @@ nb_do_cmd(
                    // disappear.
                    do_bufdel(DOBUF_DEL, (char_u *)"", 1,
                                  buf->bufp->b_fnum, buf->bufp->b_fnum, TRUE);
-                   vim_memset(buf, 0, sizeof(nbbuf_T));
+                   CLEAR_POINTER(buf);
                }
            }
 // =====================================================================
index 8ec98e5339199d4283a35bca2fb2abff021f5bf2..7dd74a40bf32f82bb0f3117e0417ab8e76bee570 100644 (file)
@@ -500,7 +500,7 @@ normal_cmd(
     int                set_prevcount = FALSE;
 #endif
 
-    vim_memset(&ca, 0, sizeof(ca));    // also resets ca.retval
+    CLEAR_FIELD(ca);   // also resets ca.retval
     ca.oap = oap;
 
     // Use a count remembered from before entering an operator.  After typing
@@ -3480,7 +3480,7 @@ do_nv_ident(int c1, int c2)
     cmdarg_T   ca;
 
     clear_oparg(&oa);
-    vim_memset(&ca, 0, sizeof(ca));
+    CLEAR_FIELD(ca);
     ca.oap = &oa;
     ca.cmdchar = c1;
     ca.nchar = c2;
@@ -4308,7 +4308,7 @@ normal_search(
     cap->oap->use_reg_one = TRUE;
     curwin->w_set_curswant = TRUE;
 
-    vim_memset(&sia, 0, sizeof(sia));
+    CLEAR_FIELD(sia);
     i = do_search(cap->oap, dir, dir, pat, cap->count1,
                            opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG, &sia);
     if (wrapped != NULL)
index 5f7cc60b6d3e9d97d6286d8aebb4d88843d34279..5e9de4d7cc714f9bc0f3529273dd015e07bac5d5 100644 (file)
--- a/src/ops.c
+++ b/src/ops.c
@@ -3412,7 +3412,7 @@ theend:
     void
 clear_oparg(oparg_T *oap)
 {
-    vim_memset(oap, 0, sizeof(oparg_T));
+    CLEAR_POINTER(oap);
 }
 
 /*
index 39ea7cbb4d024aab8bd4e394a85e6cd4b77f9652..fa4d188c2d329d877798fd9383593121f28b6cb9 100644 (file)
@@ -1369,7 +1369,7 @@ do_set(
            }
 
            /*
-            * allow '=' and ':' for hystorical reasons (MSDOS command.com
+            * allow '=' and ':' for historical reasons (MSDOS command.com
             * allows only one '=' character per "set" command line. grrr. (jw)
             */
            if (nextchar == '?'
@@ -5666,7 +5666,7 @@ buf_copy_options(buf_T *buf, int flags)
        if (should_copy || (flags & BCO_ALWAYS))
        {
 #ifdef FEAT_EVAL
-           vim_memset(buf->b_p_script_ctx, 0, sizeof(buf->b_p_script_ctx));
+           CLEAR_FIELD(buf->b_p_script_ctx);
            init_buf_opt_idx();
 #endif
            // Don't copy the options specific to a help buffer when
index faa4c99dbde0d4498ac021876b2a14f2d8e83ba2..1c987c2d62751f579815d776804b8617eb371cfd 100644 (file)
@@ -1338,7 +1338,7 @@ mch_print_init(prt_settings_T *psettings, char_u *jobname, int forceit)
     int                        i;
 
     bUserAbort = &(psettings->user_abort);
-    vim_memset(&prt_dlg, 0, sizeof(PRINTDLGW));
+    CLEAR_FIELD(prt_dlg);
     prt_dlg.lStructSize = sizeof(PRINTDLGW);
 # if !defined(FEAT_GUI) || defined(VIMDLL)
 #  ifdef VIMDLL
@@ -1467,7 +1467,7 @@ mch_print_init(prt_settings_T *psettings, char_u *jobname, int forceit)
     /*
      * Initialise the font according to 'printfont'
      */
-    vim_memset(&fLogFont, 0, sizeof(fLogFont));
+    CLEAR_FIELD(fLogFont);
     if (get_logfont(&fLogFont, p_pfn, prt_dlg.hDC, TRUE) == FAIL)
     {
        semsg(_("E613: Unknown printer font: %s"), p_pfn);
@@ -1562,7 +1562,7 @@ mch_print_begin(prt_settings_T *psettings)
     {
        DOCINFOW        di;
 
-       vim_memset(&di, 0, sizeof(di));
+       CLEAR_FIELD(di);
        di.cbSize = sizeof(di);
        di.lpszDocName = wp;
        ret = StartDocW(prt_dlg.hDC, &di);
@@ -2881,7 +2881,7 @@ get_logfont(
 # if defined(FEAT_GUI_MSWIN)
        CHOOSEFONTW     cf;
        // if name is "*", bring up std font dialog:
-       vim_memset(&cf, 0, sizeof(cf));
+       CLEAR_FIELD(cf);
        cf.lStructSize = sizeof(cf);
        cf.hwndOwner = s_hwnd;
        cf.Flags = CF_SCREENFONTS | CF_FIXEDPITCHONLY | CF_INITTOLOGFONTSTRUCT;
index a7a8ad1cf2da2d9d4c5c2c805fdbfa03f59b29c6..1132bbe1894e42fdbce7944aa06bda6a350b896c 100644 (file)
@@ -950,7 +950,7 @@ win32_kbd_patch_key(
     if (pker->UChar != 0)
        return 1;
 
-    vim_memset(abKeystate, 0, sizeof (abKeystate));
+    CLEAR_FIELD(abKeystate);
 
     // Clear any pending dead keys
     ToUnicode(VK_SPACE, MapVirtualKey(VK_SPACE, 0), abKeystate, awAnsiCode, 2, 0);
index c6214d290b465591141f350dcb854394649df70b..b267ec54afa7ba69d0ed5a98b5a67ac8ffadd6ec 100644 (file)
@@ -1382,7 +1382,7 @@ pum_execute_menu(vimmenu_T *menu, int mode)
     FOR_ALL_CHILD_MENUS(menu, mp)
        if ((mp->modes & mp->enabled & mode) && idx++ == pum_selected)
        {
-           vim_memset(&ea, 0, sizeof(ea));
+           CLEAR_FIELD(ea);
            execute_menu(&ea, mp, -1);
            break;
        }
index 5c24babdfe059ce8181e40b89a8d814e908176ac..4b3f1640007f10c91fb48b6a0f26783cc7375df7 100644 (file)
@@ -1667,8 +1667,8 @@ qf_init_ext(
     // Do not used the cached buffer, it may have been wiped out.
     VIM_CLEAR(qf_last_bufname);
 
-    vim_memset(&state, 0, sizeof(state));
-    vim_memset(&fields, 0, sizeof(fields));
+    CLEAR_FIELD(state);
+    CLEAR_FIELD(fields);
     if ((qf_alloc_fields(&fields) == FAIL) ||
                (qf_setup_state(&state, enc, efile, tv, buf,
                                        lnumfirst, lnumlast) == FAIL))
@@ -1867,7 +1867,7 @@ qf_new_list(qf_info_T *qi, char_u *qf_title)
     else
        qi->qf_curlist = qi->qf_listcount++;
     qfl = qf_get_curlist(qi);
-    vim_memset(qfl, 0, (size_t)(sizeof(qf_list_T)));
+    CLEAR_POINTER(qfl);
     qf_store_title(qfl, qf_title);
     qfl->qfl_type = qi->qfl_type;
     qfl->qf_id = ++last_qf_id;
@@ -5794,7 +5794,7 @@ vgr_jump_to_match(
     {
        exarg_T ea;
 
-       vim_memset(&ea, 0, sizeof(ea));
+       CLEAR_FIELD(ea);
        ea.arg = target_dir;
        ea.cmdidx = CMD_lcd;
        ex_cd(&ea);
@@ -6151,7 +6151,7 @@ restore_start_dir(char_u *dirname_start)
            // appropriate ex command and executing it.
            exarg_T ea;
 
-           vim_memset(&ea, 0, sizeof(ea));
+           CLEAR_FIELD(ea);
            ea.arg = dirname_start;
            ea.cmdidx = (curwin->w_localdir == NULL) ? CMD_cd : CMD_lcd;
            ex_cd(&ea);
index b4fb59598907c4b34bd6e1f531a923a98b32b0b0..3911c906165f1f1ae0139fb45bd499672285f6fc 100644 (file)
@@ -2014,7 +2014,7 @@ vim_regsub_both(
                argv[0].v_type = VAR_LIST;
                argv[0].vval.v_list = &matchList.sl_list;
                matchList.sl_list.lv_len = 0;
-               vim_memset(&funcexe, 0, sizeof(funcexe));
+               CLEAR_FIELD(funcexe);
                funcexe.argv_func = fill_submatch_list;
                funcexe.evaluate = TRUE;
                if (expr->v_type == VAR_FUNC)
index 0ed37113632a48552a5d7cba26587143bce03cd0..fef66e42fa1c116da44308c659fcc3b3a9904469 100644 (file)
@@ -470,7 +470,7 @@ regcomp_start(
 
     num_complex_braces = 0;
     regnpar = 1;
-    vim_memset(had_endbrace, 0, sizeof(had_endbrace));
+    CLEAR_FIELD(had_endbrace);
 #ifdef FEAT_SYN_HL
     regnzpar = 1;
     re_has_z = 0;
index 67d4af2f6177ec74375f1d7ec6c8ac2932edabde..26a8f356b17e606c8b4cd613b9ca69c5c4a00c23 100644 (file)
@@ -4564,7 +4564,7 @@ skip_add:
 
            // avoid compiler warnings
            save_ptr = NULL;
-           vim_memset(&save_multipos, 0, sizeof(save_multipos));
+           CLEAR_FIELD(save_multipos);
 
            // Set the position (with "off" added) in the subexpression.  Save
            // and restore it when it was in use.  Otherwise fill any gap.
@@ -4717,7 +4717,7 @@ skip_add:
                save_ptr = sub->list.line[subidx].end;
                sub->list.line[subidx].end = rex.input + off;
                // avoid compiler warnings
-               vim_memset(&save_multipos, 0, sizeof(save_multipos));
+               CLEAR_FIELD(save_multipos);
            }
 
            subs = addstate(l, state->out, subs, pim, off_arg);
index e3265c25c6034bde401b5b20215f3100bc64b825..8c335ffd3ab10ee90060ffda63aaddc7c8e01625 100644 (file)
@@ -470,7 +470,7 @@ set_last_csearch(int c, char_u *s UNUSED, int len UNUSED)
     if (len)
        memcpy(lastc_bytes, s, len);
     else
-       vim_memset(lastc_bytes, 0, sizeof(lastc_bytes));
+       CLEAR_FIELD(lastc_bytes);
 }
 #endif
 
index fb7d5698927cadb24d008f43a176e022675251c2..576c4d01fcc672160a8fd108affe9c469dd0b44c 100644 (file)
@@ -489,7 +489,7 @@ buf_get_signattrs(win_T *wp, linenr_T lnum, sign_attrs_T *sattr)
     sign_T             *sp;
     buf_T              *buf = wp->w_buffer;
 
-    vim_memset(sattr, 0, sizeof(sign_attrs_T));
+    CLEAR_POINTER(sattr);
 
     FOR_ALL_SIGNS_IN_BUF(buf, sign)
     {
index 99e030f911d14dd217575447f2077824465eab99..dab6aeaf4f6618c10423973e7e0d7e384a35294e 100644 (file)
@@ -183,7 +183,7 @@ spell_check(
     if (wp->w_s->b_langp.ga_len == 0)
        return 1;
 
-    vim_memset(&mi, 0, sizeof(matchinf_T));
+    CLEAR_FIELD(mi);
 
     // A number is always OK.  Also skip hexadecimal numbers 0xFF99 and
     // 0X99FF.  But always do check spelling to find "3GPP" and "11
@@ -2274,7 +2274,7 @@ theend:
     static void
 clear_midword(win_T *wp)
 {
-    vim_memset(wp->w_s->b_spell_ismw, 0, 256);
+    CLEAR_FIELD(wp->w_s->b_spell_ismw);
     VIM_CLEAR(wp->w_s->b_spell_ismw_mb);
 }
 
@@ -2520,9 +2520,9 @@ clear_spell_chartab(spelltab_T *sp)
 {
     int                i;
 
-    // Init everything to FALSE.
-    vim_memset(sp->st_isw, FALSE, sizeof(sp->st_isw));
-    vim_memset(sp->st_isu, FALSE, sizeof(sp->st_isu));
+    // Init everything to FALSE (zero).
+    CLEAR_FIELD(sp->st_isw);
+    CLEAR_FIELD(sp->st_isu);
     for (i = 0; i < 256; ++i)
     {
        sp->st_fold[i] = i;
index 920e05194c2c05253dc9e675fd19ddbe42b404a4..ca25ff691aef56eb4e89827b9dc319455484d0e5 100644 (file)
@@ -4600,7 +4600,7 @@ get_wordnode(spellinfo_T *spin)
     {
        n = spin->si_first_free;
        spin->si_first_free = n->wn_child;
-       vim_memset(n, 0, sizeof(wordnode_T));
+       CLEAR_POINTER(n);
        --spin->si_free_count;
     }
 #ifdef SPELL_PRINTTREE
@@ -5886,7 +5886,7 @@ mkspell(
     int                error = FALSE;
     spellinfo_T spin;
 
-    vim_memset(&spin, 0, sizeof(spin));
+    CLEAR_FIELD(spin);
     spin.si_verbose = !added_word;
     spin.si_ascii = ascii;
     spin.si_followup = TRUE;
index b74d30ba3a5198ca45a13a6b65f216a59d5af12d..c1ead7cce1165cfd920a5c3e5b6f172bac9f9834 100644 (file)
@@ -760,7 +760,7 @@ spell_find_suggest(
     langp_T    *lp;
 
     // Set the info in "*su".
-    vim_memset(su, 0, sizeof(suginfo_T));
+    CLEAR_POINTER(su);
     ga_init2(&su->su_ga, (int)sizeof(suggest_T), 10);
     ga_init2(&su->su_sga, (int)sizeof(suggest_T), 10);
     if (*badptr == NUL)
@@ -1266,7 +1266,7 @@ suggest_trie_walk(
     // word).
     depth = 0;
     sp = &stack[0];
-    vim_memset(sp, 0, sizeof(trystate_T));
+    CLEAR_POINTER(sp);
     sp->ts_curi = 1;
 
     if (soundfold)
index b4d3afc5d72b9a245c8b2d840db5db68f2bf128f..da5dfa15028b151cdd4c40fcc0b5c8c47492afec 100644 (file)
@@ -2750,7 +2750,7 @@ push_current_state(int idx)
 {
     if (ga_grow(&current_state, 1) == FAIL)
        return FAIL;
-    vim_memset(&CUR_STATE(current_state.ga_len), 0, sizeof(stateitem_T));
+    CLEAR_POINTER(&CUR_STATE(current_state.ga_len));
     CUR_STATE(current_state.ga_len).si_idx = idx;
     ++current_state.ga_len;
     return OK;
@@ -4908,7 +4908,7 @@ syn_cmd_match(
 
     // get the pattern.
     init_syn_patterns();
-    vim_memset(&item, 0, sizeof(item));
+    CLEAR_FIELD(item);
     rest = get_syn_pattern(rest, &item);
     if (vim_regcomp_had_eol() && !(syn_opt_arg.flags & HL_EXCLUDENL))
        syn_opt_arg.flags |= HL_HAS_EOL;
@@ -5481,7 +5481,7 @@ syn_add_cluster(char_u *name)
        return 0;
     }
 
-    vim_memset(&(SYN_CLSTR(curwin->w_s)[len]), 0, sizeof(syn_cluster_T));
+    CLEAR_POINTER(&(SYN_CLSTR(curwin->w_s)[len]));
     SYN_CLSTR(curwin->w_s)[len].scl_name = name;
     SYN_CLSTR(curwin->w_s)[len].scl_name_u = vim_strsave_up(name);
     SYN_CLSTR(curwin->w_s)[len].scl_list = NULL;
index 1cb5c445a4693c6e82f5d72a57189c2f8bba0ae7..40304e6696633f043d05fee87b36094e705007f0 100644 (file)
--- a/src/tag.c
+++ b/src/tag.c
@@ -1753,7 +1753,7 @@ find_tags(
 #ifdef FEAT_TAG_BINS
     // This is only to avoid a compiler warning for using search_info
     // uninitialised.
-    vim_memset(&search_info, 0, (size_t)1);
+    CLEAR_FIELD(search_info);
 #endif
 
 #ifdef FEAT_EVAL
@@ -2260,7 +2260,7 @@ parse_line:
 #endif
                                        )
            {
-               vim_memset(&tagp, 0, sizeof(tagp));
+               CLEAR_FIELD(tagp);
                tagp.tagname = lbuf;
                tagp.tagname_end = vim_strchr(lbuf, TAB);
                if (tagp.tagname_end == NULL)
@@ -2873,7 +2873,7 @@ get_tagfname(
     int                        i;
 
     if (first)
-       vim_memset(tnp, 0, sizeof(tagname_T));
+       CLEAR_POINTER(tnp);
 
     if (curbuf->b_help)
     {
index d7d23cc25cde9f93290af3d1376e588dad068a10..f7b653a6854220a8ce33cbfe90a2af1a1bc79e15 100644 (file)
@@ -446,7 +446,7 @@ term_start(
     ga_init2(&term->tl_scrollback, sizeof(sb_line_T), 300);
     ga_init2(&term->tl_scrollback_postponed, sizeof(sb_line_T), 300);
 
-    vim_memset(&split_ea, 0, sizeof(split_ea));
+    CLEAR_FIELD(split_ea);
     if (opt->jo_curwin)
     {
        // Create a new buffer in the current window.
@@ -1756,7 +1756,7 @@ update_snapshot(term_T *term)
                    if (vterm_screen_get_cell(screen, pos, &cell) == 0)
                    {
                        width = 1;
-                       vim_memset(p + pos.col, 0, sizeof(cellattr_T));
+                       CLEAR_POINTER(p + pos.col);
                        if (ga_grow(&ga, 1) == OK)
                            ga.ga_len += utf_char2bytes(' ',
                                             (char_u *)ga.ga_data + ga.ga_len);
@@ -2243,7 +2243,7 @@ term_get_cursor_shape(guicolor_T *fg, guicolor_T *bg)
     int                         id;
     guicolor_T         term_fg, term_bg;
 
-    vim_memset(&entry, 0, sizeof(entry));
+    CLEAR_FIELD(entry);
     entry.shape = entry.mshape =
        term->tl_cursor_shape == VTERM_PROP_CURSORSHAPE_UNDERLINE ? SHAPE_HOR :
        term->tl_cursor_shape == VTERM_PROP_CURSORSHAPE_BAR_LEFT ? SHAPE_VER :
@@ -2781,7 +2781,7 @@ vtermAttr2hl(VTermScreenCellAttrs cellattrs)
     static void
 hl2vtermAttr(int attr, cellattr_T *cell)
 {
-    vim_memset(&cell->attrs, 0, sizeof(VTermScreenCellAttrs));
+    CLEAR_FIELD(cell->attrs);
     if (attr & HL_BOLD)
        cell->attrs.bold = 1;
     if (attr & HL_UNDERLINE)
@@ -2919,7 +2919,7 @@ term_scroll_up(term_T *term, int start_row, int count)
     VTermScreenCellAttrs attr;
     int                         clear_attr;
 
-    vim_memset(&attr, 0, sizeof(attr));
+    CLEAR_FIELD(attr);
 
     while (for_all_windows_and_curwin(&wp, &did_curwin))
     {
@@ -3332,7 +3332,7 @@ term_after_channel_closed(term_T *term)
            {
                exarg_T ea;
 
-               vim_memset(&ea, 0, sizeof(ea));
+               CLEAR_FIELD(ea);
                ex_quit(&ea);
                return TRUE;
            }
@@ -3502,7 +3502,7 @@ term_line2screenline(
        int             c;
 
        if (vterm_screen_get_cell(screen, *pos, &cell) == 0)
-           vim_memset(&cell, 0, sizeof(cell));
+           CLEAR_FIELD(cell);
 
        c = cell.chars[0];
        if (c == NUL)
@@ -3828,7 +3828,7 @@ init_default_colors(term_T *term, win_T *wp)
     int                    fgval, bgval;
     int                    id;
 
-    vim_memset(&term->tl_default_color.attrs, 0, sizeof(VTermScreenCellAttrs));
+    CLEAR_FIELD(term->tl_default_color.attrs);
     term->tl_default_color.width = 1;
     fg = &term->tl_default_color.fg;
     bg = &term->tl_default_color.bg;
@@ -4070,7 +4070,7 @@ handle_drop_command(listitem_T *item)
        }
     }
 
-    vim_memset(&ea, 0, sizeof(ea));
+    CLEAR_FIELD(ea);
 
     if (opt_item != NULL && opt_item->li_tv.v_type == VAR_DICT
                                        && opt_item->li_tv.vval.v_dict != NULL)
@@ -4163,7 +4163,7 @@ handle_call_command(term_T *term, channel_T *channel, listitem_T *item)
     argvars[0].v_type = VAR_NUMBER;
     argvars[0].vval.v_number = term->tl_buffer->b_fnum;
     argvars[1] = item->li_next->li_tv;
-    vim_memset(&funcexe, 0, sizeof(funcexe));
+    CLEAR_FIELD(funcexe);
     funcexe.firstline = 1L;
     funcexe.lastline = 1L;
     funcexe.evaluate = TRUE;
@@ -4582,7 +4582,7 @@ f_term_dumpwrite(typval_T *argvars, typval_T *rettv UNUSED)
        return;
     }
 
-    vim_memset(&prev_cell, 0, sizeof(prev_cell));
+    CLEAR_FIELD(prev_cell);
 
     screen = vterm_obtain_screen(term->tl_vterm);
     state = vterm_obtain_state(term->tl_vterm);
@@ -4604,7 +4604,7 @@ f_term_dumpwrite(typval_T *argvars, typval_T *rettv UNUSED)
                                                 && pos.row == cursor_pos.row);
 
            if (vterm_screen_get_cell(screen, pos, &cell) == 0)
-               vim_memset(&cell, 0, sizeof(cell));
+               CLEAR_FIELD(cell);
 
            for (i = 0; i < VTERM_MAX_CHARS_PER_CELL; ++i)
            {
@@ -4742,8 +4742,8 @@ read_dump_file(FILE *fd, VTermPos *cursor_pos)
 
     ga_init2(&ga_text, 1, 90);
     ga_init2(&ga_cell, sizeof(cellattr_T), 90);
-    vim_memset(&cell, 0, sizeof(cell));
-    vim_memset(&empty_cell, 0, sizeof(empty_cell));
+    CLEAR_FIELD(cell);
+    CLEAR_FIELD(empty_cell);
     cursor_pos->row = -1;
     cursor_pos->col = -1;
 
index bf6801f679695d3b9091e119a7e96060274bcc0d..272a5b5d3b893f8af3747b8b2110993f3bfabcc1 100644 (file)
@@ -313,7 +313,7 @@ f_strptime(typval_T *argvars, typval_T *rettv)
     vimconv_T   conv;
     char_u     *enc;
 
-    vim_memset(&tmval, NUL, sizeof(tmval));
+    CLEAR_FIELD(tmval);
     fmt = tv_get_string(&argvars[0]);
     str = tv_get_string(&argvars[1]);
 
index 54a6e1c5bdbd585db9cdee66baf3aa5192b079d8..c5ce306cabaed2caf9fba6f8647bfa16ce856bd7 100644 (file)
@@ -662,7 +662,7 @@ u_savecommon(
     uep = U_ALLOC_LINE(sizeof(u_entry_T));
     if (uep == NULL)
        goto nomem;
-    vim_memset(uep, 0, sizeof(u_entry_T));
+    CLEAR_POINTER(uep);
 #ifdef U_DEBUG
     uep->ue_magic = UE_MAGIC;
 #endif
@@ -1288,7 +1288,7 @@ unserialize_uhp(bufinfo_T *bi, char_u *file_name)
     uhp = U_ALLOC_LINE(sizeof(u_header_T));
     if (uhp == NULL)
        return NULL;
-    vim_memset(uhp, 0, sizeof(u_header_T));
+    CLEAR_POINTER(uhp);
 #ifdef U_DEBUG
     uhp->uh_magic = UH_MAGIC;
 #endif
@@ -1405,7 +1405,7 @@ unserialize_uep(bufinfo_T *bi, int *error, char_u *file_name)
     uep = U_ALLOC_LINE(sizeof(u_entry_T));
     if (uep == NULL)
        return NULL;
-    vim_memset(uep, 0, sizeof(u_entry_T));
+    CLEAR_POINTER(uep);
 #ifdef U_DEBUG
     uep->ue_magic = UE_MAGIC;
 #endif
@@ -1532,7 +1532,7 @@ u_write_undo(
 #endif
     bufinfo_T  bi;
 
-    vim_memset(&bi, 0, sizeof(bi));
+    CLEAR_FIELD(bi);
 
     if (name == NULL)
     {
@@ -1814,7 +1814,7 @@ u_read_undo(char_u *name, char_u *hash, char_u *orig_name UNUSED)
 #endif
     bufinfo_T  bi;
 
-    vim_memset(&bi, 0, sizeof(bi));
+    CLEAR_FIELD(bi);
     line_ptr.ul_len = 0;
     line_ptr.ul_line = NULL;
 
index 316eac6aa0837252dd96651eae4ef65715a17a2c..3c15c79c538717cb6503600c34984466eff06166 100644 (file)
@@ -1136,7 +1136,7 @@ call_user_func(
        v->di_tv.v_lock = VAR_FIXED;
        v->di_tv.vval.v_list = &fc->l_varlist;
     }
-    vim_memset(&fc->l_varlist, 0, sizeof(list_T));
+    CLEAR_FIELD(fc->l_varlist);
     fc->l_varlist.lv_refcount = DO_NOT_FREE_CNT;
     fc->l_varlist.lv_lock = VAR_FIXED;
 
@@ -1659,7 +1659,7 @@ func_call(
     {
        funcexe_T funcexe;
 
-       vim_memset(&funcexe, 0, sizeof(funcexe));
+       CLEAR_FIELD(funcexe);
        funcexe.firstline = curwin->w_cursor.lnum;
        funcexe.lastline = curwin->w_cursor.lnum;
        funcexe.evaluate = TRUE;
@@ -1698,7 +1698,7 @@ call_callback(
     funcexe_T  funcexe;
     int                ret;
 
-    vim_memset(&funcexe, 0, sizeof(funcexe));
+    CLEAR_FIELD(funcexe);
     funcexe.evaluate = TRUE;
     funcexe.partial = callback->cb_partial;
     ++callback_depth;
@@ -2052,7 +2052,7 @@ trans_function_name(
     int                vim9script;
 
     if (fdp != NULL)
-       vim_memset(fdp, 0, sizeof(funcdict_T));
+       CLEAR_POINTER(fdp);
     start = *pp;
 
     // Check for hard coded <SNR>: already translated function ID (from a user
@@ -3572,7 +3572,7 @@ ex_call(exarg_T *eap)
        }
        arg = startarg;
 
-       vim_memset(&funcexe, 0, sizeof(funcexe));
+       CLEAR_FIELD(funcexe);
        funcexe.firstline = eap->line1;
        funcexe.lastline = eap->line2;
        funcexe.doesrange = &doesrange;
index eeec3e942b1c50263830d065785ee270f0064708..f9d8a5a82c4cbc477964eea0ad747ef99af8a63d 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    559,
 /**/
     558,
 /**/
index 535a18d65740b2d6413d59febe5b959c612b5cb7..d882e50198f4f38c3dc6a094d1ac1aebdd8baea9 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -1575,6 +1575,14 @@ typedef UINT32_TYPEDEF UINT32_T;
 #define LALLOC_CLEAR_MULT(type, count)  (type *)lalloc_clear(sizeof(type) * (count), FALSE)
 #define LALLOC_MULT(type, count)  (type *)lalloc(sizeof(type) * (count), FALSE)
 
+#ifdef HAVE_MEMSET
+# define vim_memset(ptr, c, size)   memset((ptr), (c), (size))
+#else
+void *vim_memset(void *, int, size_t);
+#endif
+#define CLEAR_FIELD(field)  vim_memset(&(field), 0, sizeof(field))
+#define CLEAR_POINTER(ptr)  vim_memset((ptr), 0, sizeof(*(ptr)))
+
 /*
  * defines to avoid typecasts from (char_u *) to (char *) and back
  * (vim_strchr() and vim_strrchr() are now in alloc.c)
@@ -1708,12 +1716,6 @@ typedef void         *vim_acl_T;         // dummy to pass an ACL to a function
 #define fnamecmp(x, y) vim_fnamecmp((char_u *)(x), (char_u *)(y))
 #define fnamencmp(x, y, n) vim_fnamencmp((char_u *)(x), (char_u *)(y), (size_t)(n))
 
-#ifdef HAVE_MEMSET
-# define vim_memset(ptr, c, size)   memset((ptr), (c), (size))
-#else
-void *vim_memset(void *, int, size_t);
-#endif
-
 #if defined(UNIX) || defined(FEAT_GUI) || defined(VMS) \
        || defined(FEAT_CLIENTSERVER)
 # define USE_INPUT_BUF
index f2f7cc37e9dc082bfff6b8b056eb106586e33fac..6abf95cc429c7d8e896088d9ea00a9cde8515aee 100644 (file)
@@ -5617,7 +5617,7 @@ compile_def_function(ufunc_T *ufunc, int set_return_type)
            if (ga_grow(&def_functions, 1) == FAIL)
                return;
            dfunc = ((dfunc_T *)def_functions.ga_data) + def_functions.ga_len;
-           vim_memset(dfunc, 0, sizeof(dfunc_T));
+           CLEAR_POINTER(dfunc);
            dfunc->df_idx = def_functions.ga_len;
            ufunc->uf_dfunc_idx = dfunc->df_idx;
            dfunc->df_ufunc = ufunc;
@@ -5625,7 +5625,7 @@ compile_def_function(ufunc_T *ufunc, int set_return_type)
        }
     }
 
-    vim_memset(&cctx, 0, sizeof(cctx));
+    CLEAR_FIELD(cctx);
     cctx.ctx_ufunc = ufunc;
     cctx.ctx_lnum = -1;
     ga_init2(&cctx.ctx_locals, sizeof(lvar_T), 10);
@@ -5713,7 +5713,7 @@ compile_def_function(ufunc_T *ufunc, int set_return_type)
        emsg_before = called_emsg;
 
        had_return = FALSE;
-       vim_memset(&ea, 0, sizeof(ea));
+       CLEAR_FIELD(ea);
        ea.cmdlinep = &line;
        ea.cmd = skipwhite(line);
 
index a7850d125a3e0c54ea326f033c577744547ad703..f8fb061f8401a99bfdb5d52dfbb66839f497574a 100644 (file)
@@ -358,7 +358,7 @@ call_ufunc(ufunc_T *ufunc, int argcount, ectx_T *ectx, isn_T *iptr)
 
     if (call_prepare(argcount, argvars, ectx) == FAIL)
        return FAIL;
-    vim_memset(&funcexe, 0, sizeof(funcexe));
+    CLEAR_FIELD(funcexe);
     funcexe.evaluate = TRUE;
 
     // Call the user function.  Result goes in last position on the stack.
@@ -498,7 +498,7 @@ call_def_function(
 // Get pointer to a local variable on the stack.  Negative for arguments.
 #define STACK_TV_VAR(idx) (((typval_T *)ectx.ec_stack.ga_data) + ectx.ec_frame + STACK_FRAME_SIZE + idx)
 
-    vim_memset(&ectx, 0, sizeof(ectx));
+    CLEAR_FIELD(ectx);
     ga_init2(&ectx.ec_stack, sizeof(typval_T), 500);
     if (ga_grow(&ectx.ec_stack, 20) == FAIL)
        return FAIL;