diff options
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 306 |
1 files changed, 153 insertions, 153 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 67cef68b38..1616bf60e2 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -513,7 +513,7 @@ void eval_clear(void) for (int i = 0; i < VV_LEN; ++i) { p = &vimvars[i]; if (p->vv_di.di_tv.v_type == VAR_STRING) { - free(p->vv_str); + xfree(p->vv_str); p->vv_str = NULL; } else if (p->vv_di.di_tv.v_type == VAR_LIST) { list_unref(p->vv_list); @@ -539,7 +539,7 @@ void eval_clear(void) for (int i = 1; i <= ga_scripts.ga_len; ++i) vars_clear(&SCRIPT_VARS(i)); for (int i = 1; i <= ga_scripts.ga_len; ++i) - free(SCRIPT_SV(i)); + xfree(SCRIPT_SV(i)); ga_clear(&ga_scripts); /* unreferenced lists and dicts */ @@ -735,13 +735,13 @@ void var_redir_stop(void) } /* free the collected output */ - free(redir_ga.ga_data); + xfree(redir_ga.ga_data); redir_ga.ga_data = NULL; - free(redir_lval); + xfree(redir_lval); redir_lval = NULL; } - free(redir_varname); + xfree(redir_varname); redir_varname = NULL; } @@ -1059,7 +1059,7 @@ typval_T *eval_expr(char_u *arg, char_u **nextcmd) typval_T *tv = xmalloc(sizeof(typval_T)); if (eval0(arg, tv, nextcmd, TRUE) == FAIL) { - free(tv); + xfree(tv); return NULL; } @@ -1126,7 +1126,7 @@ call_vim_function ( --sandbox; restore_funccal(save_funccalp); } - free(argvars); + xfree(argvars); if (ret == FAIL) clear_tv(rettv); @@ -1691,14 +1691,14 @@ static char_u *list_arg_vars(exarg_T *eap, char_u *arg, int *first) s == NULL ? (char_u *)"" : s, first); *arg = c; - free(tf); + xfree(tf); } clear_tv(&tv); } } } - free(tofree); + xfree(tofree); } arg = skipwhite(arg); @@ -1756,7 +1756,7 @@ ex_let_one ( if (s != NULL) { p = tofree = concat_str(s, p); if (mustfree) - free(s); + xfree(s); } } if (p != NULL) { @@ -1771,7 +1771,7 @@ ex_let_one ( arg_end = arg; } name[len] = c1; - free(tofree); + xfree(tofree); } } } @@ -1812,7 +1812,7 @@ ex_let_one ( n = numval - n; } else if (opt_type == 0 && stringval != NULL) { /* string */ s = concat_str(stringval, s); - free(stringval); + xfree(stringval); stringval = s; } } @@ -1822,7 +1822,7 @@ ex_let_one ( arg_end = p; } *p = c1; - free(stringval); + xfree(stringval); } } /* @@ -1844,14 +1844,14 @@ ex_let_one ( s = get_reg_contents(*arg == '@' ? '"' : *arg, kGRegExprSrc); if (s != NULL) { p = ptofree = concat_str(s, p); - free(s); + xfree(s); } } if (p != NULL) { write_reg_contents(*arg == '@' ? '"' : *arg, p, -1, FALSE); arg_end = arg + 1; } - free(ptofree); + xfree(ptofree); } } /* @@ -2211,8 +2211,8 @@ get_lval ( */ static void clear_lval(lval_T *lp) { - free(lp->ll_exp_name); - free(lp->ll_newkey); + xfree(lp->ll_exp_name); + xfree(lp->ll_newkey); } /* @@ -2305,7 +2305,7 @@ static void set_var_lval(lval_T *lp, char_u *endp, typval_T *rettv, int copy, ch /* Need to add an item to the Dictionary. */ di = dictitem_alloc(lp->ll_newkey); if (dict_add(lp->ll_tv->vval.v_dict, di) == FAIL) { - free(di); + xfree(di); return; } lp->ll_tv = &di->di_tv; @@ -2540,7 +2540,7 @@ void free_for_info(void *fi_void) list_rem_watch(fi->fi_list, &fi->fi_lw); list_unref(fi->fi_list); } - free(fi); + xfree(fi); } @@ -2654,7 +2654,7 @@ void ex_call(exarg_T *eap) if (fudi.fd_newkey != NULL) { /* Still need to give an error message for missing key. */ EMSG2(_(e_dictkey), fudi.fd_newkey); - free(fudi.fd_newkey); + xfree(fudi.fd_newkey); } if (tofree == NULL) return; @@ -2734,7 +2734,7 @@ void ex_call(exarg_T *eap) end: dict_unref(fudi.fd_dict); - free(tofree); + xfree(tofree); } /* @@ -3055,7 +3055,7 @@ static char_u *cat_prefix_varname(int prefix, char_u *name) size_t len = STRLEN(name) + 3; if (len > varnamebuflen) { - free(varnamebuf); + xfree(varnamebuf); len += 10; /* some additional space */ varnamebuf = xmalloc(len); varnamebuflen = len; @@ -3142,7 +3142,7 @@ char_u *get_user_var_name(expand_T *xp, int idx) if (vidx < VV_LEN) return cat_prefix_varname('v', (char_u *)vimvars[vidx++].vv_name); - free(varnamebuf); + xfree(varnamebuf); varnamebuf = NULL; varnamebuflen = 0; return NULL; @@ -4150,7 +4150,7 @@ eval7 ( else ret = OK; } - free(alias); + xfree(alias); } *arg = skipwhite(*arg); @@ -4784,9 +4784,9 @@ list_free ( if (recurse || (item->li_tv.v_type != VAR_LIST && item->li_tv.v_type != VAR_DICT)) clear_tv(&item->li_tv); - free(item); + xfree(item); } - free(l); + xfree(l); } /* @@ -4803,7 +4803,7 @@ listitem_T *listitem_alloc(void) FUNC_ATTR_NONNULL_RET void listitem_free(listitem_T *item) { clear_tv(&item->li_tv); - free(item); + xfree(item); } /* @@ -5275,7 +5275,7 @@ static list_T *list_copy(list_T *orig, int deep, int copyID) ni = listitem_alloc(); if (deep) { if (item_copy(&item->li_tv, &ni->li_tv, deep, copyID) == FAIL) { - free(ni); + xfree(ni); break; } } else @@ -5330,7 +5330,7 @@ static char_u *list2string(typval_T *tv, int copyID) ga_init(&ga, (int)sizeof(char), 80); ga_append(&ga, '['); if (list_join(&ga, tv->vval.v_list, (char_u *)", ", FALSE, copyID) == FAIL) { - free(ga.ga_data); + xfree(ga.ga_data); return NULL; } ga_append(&ga, ']'); @@ -5423,7 +5423,7 @@ static int list_join(garray_T *gap, list_T *l, char_u *sep, int echo_style, int ga_init(&join_ga, (int)sizeof(join_T), l->lv_len); retval = list_join_inner(gap, l, sep, echo_style, copyID, &join_ga); -# define FREE_JOIN_TOFREE(join) free((join)->tofree) +# define FREE_JOIN_TOFREE(join) xfree((join)->tofree) GA_DEEP_CLEAR(&join_ga, join_T, FREE_JOIN_TOFREE); return retval; @@ -5729,12 +5729,12 @@ dict_free ( if (recurse || (di->di_tv.v_type != VAR_LIST && di->di_tv.v_type != VAR_DICT)) clear_tv(&di->di_tv); - free(di); + xfree(di); --todo; } } hash_clear(&d->dv_hashtab); - free(d); + xfree(d); } /* @@ -5787,7 +5787,7 @@ static void dictitem_remove(dict_T *dict, dictitem_T *item) void dictitem_free(dictitem_T *item) { clear_tv(&item->di_tv); - free(item); + xfree(item); } /* @@ -5820,7 +5820,7 @@ static dict_T *dict_copy(dict_T *orig, int deep, int copyID) if (deep) { if (item_copy(&HI2DI(hi)->di_tv, &di->di_tv, deep, copyID) == FAIL) { - free(di); + xfree(di); break; } } else @@ -5929,7 +5929,7 @@ dictitem_T *dict_find(dict_T *d, char_u *key, int len) } hi = hash_find(&d->dv_hashtab, akey); - free(tofree); + xfree(tofree); if (HASHITEM_EMPTY(hi)) return NULL; return HI2DI(hi); @@ -5960,7 +5960,7 @@ static bool get_dict_callback(dict_T *d, char *key, ufunc_T **result) if (*n > '9' || *n < '0') { if ((n = trans_function_name(&n, false, TFN_INT|TFN_QUIET, NULL))) { rv = find_func(n); - free(n); + xfree(n); } } else { // dict function, name is already translated @@ -6045,20 +6045,20 @@ static char_u *dict2string(typval_T *tv, int copyID) tofree = string_quote(hi->hi_key, FALSE); if (tofree != NULL) { ga_concat(&ga, tofree); - free(tofree); + xfree(tofree); } ga_concat(&ga, (char_u *)": "); s = tv2string(&HI2DI(hi)->di_tv, &tofree, numbuf, copyID); if (s != NULL) ga_concat(&ga, s); - free(tofree); + xfree(tofree); if (s == NULL || did_echo_string_emsg) { break; } line_breakcheck(); } if (todo > 0) { - free(ga.ga_data); + xfree(ga.ga_data); return NULL; } @@ -6374,13 +6374,13 @@ static int get_env_tv(char_u **arg, typval_T *rettv, int evaluate) } } else { if (mustfree) { - free(string); + xfree(string); } // Next try expanding things like $VIM and ${HOME}. string = expand_env_save(name - 1); if (string != NULL && *string == '$') { - free(string); + xfree(string); string = NULL; } } @@ -7030,8 +7030,8 @@ call_func ( } if (fname != name && fname != fname_buf) - free(fname); - free(name); + xfree(fname); + xfree(name); return ret; } @@ -7050,7 +7050,7 @@ static void emsg_funcname(char *ermsg, char_u *name) p = name; EMSG2(_(ermsg), p); if (p != name) - free(p); + xfree(p); } /* @@ -8200,7 +8200,7 @@ static void f_exists(typval_T *argvars, typval_T *rettv) p = expand_env_save(p); if (p != NULL && *p != '$') n = TRUE; - free(p); + xfree(p); } } else if (*p == '&' || *p == '+') { /* option */ n = (get_option_tv(&p, NULL, TRUE) == OK); @@ -8236,7 +8236,7 @@ static void f_exists(typval_T *argvars, typval_T *rettv) if (*p != NUL) n = FALSE; - free(tofree); + xfree(tofree); } rettv->vval.v_number = n; @@ -8529,7 +8529,7 @@ static void findfilendir(typval_T *argvars, typval_T *rettv, int find_what) if (*fname != NUL && !error) { do { if (rettv->v_type == VAR_STRING || rettv->v_type == VAR_LIST) - free(fresult); + xfree(fresult); fresult = find_file_in_path_option(first ? fname : NULL, first ? (int)STRLEN(fname) : 0, 0, first, path, @@ -8792,7 +8792,7 @@ static void f_fnamemodify(typval_T *argvars, typval_T *rettv) rettv->vval.v_string = NULL; else rettv->vval.v_string = vim_strnsave(fname, len); - free(fbuf); + xfree(fbuf); } @@ -9275,7 +9275,7 @@ static void f_getcwd(typval_T *argvars, typval_T *rettv) slash_adjust(rettv->vval.v_string); #endif } - free(cwd); + xfree(cwd); } /* @@ -10252,8 +10252,8 @@ static void f_iconv(typval_T *argvars, typval_T *rettv) rettv->vval.v_string = string_convert(&vimconv, str, NULL); convert_setup(&vimconv, NULL, NULL); - free(from); - free(to); + xfree(from); + xfree(to); } /* @@ -10391,7 +10391,7 @@ static void get_user_input(typval_T *argvars, typval_T *rettv, int inputdialog) rettv->vval.v_string = vim_strsave(get_tv_string_buf( &argvars[2], buf)); - free(xp_arg); + xfree(xp_arg); /* since the user typed this, no need to wait for return */ need_wait_return = FALSE; @@ -10742,7 +10742,7 @@ static void f_jobsend(typval_T *argvars, typval_T *rettv) return; } - WBuffer *buf = wstream_new_buffer(input, input_len, 1, free); + WBuffer *buf = wstream_new_buffer(input, input_len, 1, xfree); rettv->vval.v_number = job_write(job, buf); } @@ -11239,7 +11239,7 @@ static void get_maparg(typval_T *argvars, typval_T *rettv, int exact) keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, FALSE); rhs = check_map(keys, mode, exact, FALSE, abbr, &mp, &buffer_local); - free(keys_buf); + xfree(keys_buf); if (!get_dict) { /* Return a string. */ @@ -11264,8 +11264,8 @@ static void get_maparg(typval_T *argvars, typval_T *rettv, int exact) dict_add_nr_str(dict, "nowait", mp->m_nowait ? 1L : 0L, NULL); dict_add_nr_str(dict, "mode", 0L, mapmode); - free(lhs); - free(mapmode); + xfree(lhs); + xfree(mapmode); } } } @@ -11412,7 +11412,7 @@ static void find_some_match(typval_T *argvars, typval_T *rettv, int type) match = FALSE; break; } - free(tofree); + xfree(tofree); str = echo_string(&li->li_tv, &tofree, strbuf, 0); if (str == NULL) break; @@ -11476,7 +11476,7 @@ static void find_some_match(typval_T *argvars, typval_T *rettv, int type) } theend: - free(tofree); + xfree(tofree); p_cpo = save_cpo; } @@ -11710,7 +11710,7 @@ static int mkdir_recurse(char_u *dir, int prot) r = OK; else if (mkdir_recurse(updir, prot) == OK) r = vim_mkdir_emsg(updir, prot); - free(updir); + xfree(updir); return r; } @@ -12139,7 +12139,7 @@ static void f_readfile(typval_T *argvars, typval_T *rettv) --cnt; } - free(prev); + xfree(prev); fclose(fd); } @@ -12289,7 +12289,7 @@ static void f_remove(typval_T *argvars, typval_T *rettv) // Remove one item, return its value. vim_list_remove(l, item, item); *rettv = item->li_tv; - free(item); + xfree(item); } else { /* Remove range of items, return list with values. */ end = get_tv_number_chk(&argvars[2], &error); @@ -12432,8 +12432,8 @@ static void f_resolve(typval_T *argvars, typval_T *rettv) buf[len] = NUL; if (limit-- == 0) { - free(p); - free(remain); + xfree(p); + xfree(remain); EMSG(_("E655: Too many symbolic links (cycle?)")); rettv->vval.v_string = NULL; goto fail; @@ -12451,7 +12451,7 @@ static void f_resolve(typval_T *argvars, typval_T *rettv) cpy = remain; remain = remain ? concat_str(q - 1, remain) : (char_u *) xstrdup((char *)q - 1); - free(cpy); + xfree(cpy); q[-1] = NUL; } @@ -12466,10 +12466,10 @@ static void f_resolve(typval_T *argvars, typval_T *rettv) cpy = xmalloc(STRLEN(p) + STRLEN(buf) + 1); STRCPY(cpy, p); STRCPY(path_tail(cpy), buf); - free(p); + xfree(p); p = cpy; } else { - free(p); + xfree(p); p = vim_strsave(buf); } } @@ -12482,14 +12482,14 @@ static void f_resolve(typval_T *argvars, typval_T *rettv) len = q - remain - (*q != NUL); cpy = vim_strnsave(p, STRLEN(p) + len); STRNCAT(cpy, remain, len); - free(p); + xfree(p); p = cpy; /* Shorten "remain". */ if (*q != NUL) STRMOVE(remain, q - 1); else { - free(remain); + xfree(remain); remain = NULL; } } @@ -12507,7 +12507,7 @@ static void f_resolve(typval_T *argvars, typval_T *rettv) || vim_ispathsep(p[2])))))) { /* Prepend "./". */ cpy = concat_str((char_u *)"./", p); - free(p); + xfree(p); p = cpy; } else if (!is_relative_to_current) { /* Strip leading "./". */ @@ -12538,7 +12538,7 @@ static void f_resolve(typval_T *argvars, typval_T *rettv) #ifdef HAVE_READLINK fail: - free(buf); + xfree(buf); #endif rettv->v_type = VAR_STRING; } @@ -13256,8 +13256,8 @@ do_searchpair ( if ((flags & SP_NOMOVE) || retval == 0) curwin->w_cursor = save_cursor; - free(pat2); - free(pat3); + xfree(pat2); + xfree(pat3); if (p_cpo == empty_option) p_cpo = save_cpo; else @@ -13329,7 +13329,7 @@ static void f_setbufvar(typval_T *argvars, typval_T *rettv) STRCPY(bufvarname, "b:"); STRCPY(bufvarname + 2, varname); set_var(bufvarname, varp, TRUE); - free(bufvarname); + xfree(bufvarname); } /* reset notion of buffer */ @@ -13632,8 +13632,8 @@ static void f_setreg(typval_T *argvars, typval_T *rettv) free_lstval: while (curallocval > allocval) - free(*--curallocval); - free(lstval); + xfree(*--curallocval); + xfree(lstval); } else { char_u *strval = get_tv_string_chk(&argvars[1]); if (strval == NULL) { @@ -13673,7 +13673,7 @@ static void f_settabvar(typval_T *argvars, typval_T *rettv) STRCPY(tabvarname, "t:"); STRCPY(tabvarname + 2, varname); set_var(tabvarname, varp, TRUE); - free(tabvarname); + xfree(tabvarname); /* Restore current tabpage */ if (valid_tabpage(save_curtab)) @@ -13739,7 +13739,7 @@ static void setwinvar(typval_T *argvars, typval_T *rettv, int off) STRCPY(winvarname, "w:"); STRCPY(winvarname + 2, varname); set_var(winvarname, varp, TRUE); - free(winvarname); + xfree(winvarname); } restore_win(save_curwin, save_curtab, TRUE); } @@ -13888,8 +13888,8 @@ static int item_compare(const void *s1, const void *s2, bool keep_zero) res = si1->idx > si2->idx ? 1 : -1; } - free(tofree1); - free(tofree2); + xfree(tofree1); + xfree(tofree2); return res; } @@ -14095,7 +14095,7 @@ static void do_sort_uniq(typval_T *argvars, typval_T *rettv, bool sort) } } - free(ptrs); + xfree(ptrs); } } @@ -14365,7 +14365,7 @@ static void f_strftime(typval_T *argvars, typval_T *rettv) result_buf[0] = NUL; if (conv.vc_type != CONV_NONE) - free(p); + xfree(p); convert_setup(&conv, enc, p_enc); if (conv.vc_type != CONV_NONE) rettv->vval.v_string = string_convert(&conv, result_buf, NULL); @@ -14374,7 +14374,7 @@ static void f_strftime(typval_T *argvars, typval_T *rettv) /* Release conversion descriptors */ convert_setup(&conv, NULL, NULL); - free(enc); + xfree(enc); } } @@ -14862,7 +14862,7 @@ static void get_system_output_as_rettv(typval_T *argvars, typval_T *rettv, char *res = NULL; int status = os_system(cmd, input, input_len, &res, &nread); - free(input); + xfree(input); set_vim_var_nr(VV_SHELL_ERROR, (long) status); @@ -14885,7 +14885,7 @@ static void get_system_output_as_rettv(typval_T *argvars, typval_T *rettv, rettv->vval.v_list->lv_refcount++; rettv->v_type = VAR_LIST; - free(res); + xfree(res); } else { // res may contain several NULs before the final terminating one. // Replace them with SOH (1) like in get_cmd_output() to avoid truncation. @@ -15043,7 +15043,7 @@ static void f_tagfiles(typval_T *argvars, typval_T *rettv) } tagname_free(&tn); - free(fname); + xfree(fname); } /* @@ -15372,7 +15372,7 @@ static void f_undofile(typval_T *argvars, typval_T *rettv) if (ffname != NULL) rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); - free(ffname); + xfree(ffname); } } } @@ -16115,7 +16115,7 @@ static char_u *make_expanded_name(char_u *in_start, char_u *expr_start, char_u * STRCAT(retval, temp_result); STRCAT(retval, expr_end + 1); } - free(temp_result); + xfree(temp_result); *in_end = c1; /* put char back for error messages */ *expr_start = '{'; @@ -16127,7 +16127,7 @@ static char_u *make_expanded_name(char_u *in_start, char_u *expr_start, char_u * /* Further expansion! */ temp_result = make_expanded_name(retval, expr_start, expr_end, temp_result); - free(retval); + xfree(retval); retval = temp_result; } } @@ -16228,7 +16228,7 @@ set_vim_var_string ( * Will always be invoked when "v:progname" is set. */ vimvars[VV_VERSION].vv_nr = VIM_VERSION_100; - free(vimvars[idx].vv_str); + xfree(vimvars[idx].vv_str); if (val == NULL) vimvars[idx].vv_str = NULL; else if (len == -1) @@ -16307,7 +16307,7 @@ char_u *set_cmdarg(exarg_T *eap, char_u *oldarg) oldval = vimvars[VV_CMDARG].vv_str; if (eap == NULL) { - free(oldval); + xfree(oldval); vimvars[VV_CMDARG].vv_str = oldarg; return NULL; } @@ -16490,7 +16490,7 @@ void free_tv(typval_T *varp) func_unref(varp->vval.v_string); /*FALLTHROUGH*/ case VAR_STRING: - free(varp->vval.v_string); + xfree(varp->vval.v_string); break; case VAR_LIST: list_unref(varp->vval.v_list); @@ -16506,7 +16506,7 @@ void free_tv(typval_T *varp) EMSG2(_(e_intern2), "free_tv()"); break; } - free(varp); + xfree(varp); } } @@ -16520,12 +16520,12 @@ void clear_tv(typval_T *varp) case VAR_FUNC: func_unref(varp->vval.v_string); if (varp->vval.v_string != empty_string) { - free(varp->vval.v_string); + xfree(varp->vval.v_string); } varp->vval.v_string = NULL; break; case VAR_STRING: - free(varp->vval.v_string); + xfree(varp->vval.v_string); varp->vval.v_string = NULL; break; case VAR_LIST: @@ -16929,7 +16929,7 @@ static void vars_clear_ext(hashtab_T *ht, int free_val) if (free_val) clear_tv(&v->di_tv); if ((v->di_flags & DI_FLAGS_FIX) == 0) - free(v); + xfree(v); } } hash_clear(ht); @@ -16946,7 +16946,7 @@ static void delete_var(hashtab_T *ht, hashitem_T *hi) hash_remove(ht, hi); clear_tv(&di->di_tv); - free(di); + xfree(di); } /* @@ -16962,7 +16962,7 @@ static void list_one_var(dictitem_T *v, char_u *prefix, int *first) s = echo_string(&v->di_tv, &tofree, numbuf, current_copyID); list_one_var_a(prefix, v->di_key, v->di_tv.v_type, s == NULL ? (char_u *)"" : s, first); - free(tofree); + xfree(tofree); } static void @@ -17057,7 +17057,7 @@ set_var ( */ if (ht == &vimvarht) { if (v->di_tv.v_type == VAR_STRING) { - free(v->di_tv.vval.v_string); + xfree(v->di_tv.vval.v_string); if (copy || tv->v_type != VAR_STRING) v->di_tv.vval.v_string = vim_strsave(get_tv_string(tv)); else { @@ -17094,7 +17094,7 @@ set_var ( v = xmalloc(sizeof(dictitem_T) + STRLEN(varname)); STRCPY(v->di_key, varname); if (hash_add(ht, DI2HIKEY(v)) == FAIL) { - free(v); + xfree(v); return; } v->di_flags = 0; @@ -17385,7 +17385,7 @@ void ex_echo(exarg_T *eap) (void)msg_outtrans_len_attr(p, 1, echo_attr); } } - free(tofree); + xfree(tofree); } clear_tv(&rettv); arg = skipwhite(arg); @@ -17631,7 +17631,7 @@ void ex_function(exarg_T *eap) if (!aborting()) { if (!eap->skip && fudi.fd_newkey != NULL) EMSG2(_(e_dictkey), fudi.fd_newkey); - free(fudi.fd_newkey); + xfree(fudi.fd_newkey); return; } else eap->skip = TRUE; @@ -17747,7 +17747,7 @@ void ex_function(exarg_T *eap) for (int i = 0; i < newargs.ga_len; ++i) if (STRCMP(((char_u **)(newargs.ga_data))[i], arg) == 0) { EMSG2(_("E853: Duplicate argument name: %s"), arg); - free(arg); + xfree(arg); goto erret; } @@ -17853,7 +17853,7 @@ void ex_function(exarg_T *eap) /* between ":append" and "." and between ":python <<EOF" and "EOF" * don't check for ":endfunc". */ if (STRCMP(theline, skip_until) == 0) { - free(skip_until); + xfree(skip_until); skip_until = NULL; } } else { @@ -17864,7 +17864,7 @@ void ex_function(exarg_T *eap) /* Check for "endfunction". */ if (checkforcmd(&p, "endfunction", 4) && nesting-- == 0) { if (line_arg == NULL) - free(theline); + xfree(theline); break; } @@ -17884,7 +17884,7 @@ void ex_function(exarg_T *eap) p = skipwhite(p + 1); } p += eval_fname_script(p); - free(trans_function_name(&p, TRUE, 0, NULL)); + xfree(trans_function_name(&p, TRUE, 0, NULL)); if (*skipwhite(p) == '(') { nesting++; indent += 2; @@ -17933,7 +17933,7 @@ void ex_function(exarg_T *eap) * is an extra alloc/free. */ p = vim_strsave(theline); if (line_arg == NULL) - free(theline); + xfree(theline); theline = p; ((char_u **)(newlines.ga_data))[newlines.ga_len++] = theline; @@ -17978,7 +17978,7 @@ void ex_function(exarg_T *eap) /* redefine existing function */ ga_clear_strings(&(fp->uf_args)); ga_clear_strings(&(fp->uf_lines)); - free(name); + xfree(name); name = NULL; } } else { @@ -18000,7 +18000,7 @@ void ex_function(exarg_T *eap) /* Give the function a sequential number. Can only be used with a * Funcref! */ - free(name); + xfree(name); sprintf(numbuf, "%d", ++func_nr); name = vim_strsave((char_u *)numbuf); } @@ -18020,7 +18020,7 @@ void ex_function(exarg_T *eap) if (slen > plen && fnamecmp(p, sourcing_name + slen - plen) == 0) j = OK; - free(scriptname); + xfree(scriptname); } if (j == FAIL) { EMSG2(_( @@ -18037,8 +18037,8 @@ void ex_function(exarg_T *eap) /* add new dict entry */ fudi.fd_di = dictitem_alloc(fudi.fd_newkey); if (dict_add(fudi.fd_dict, fudi.fd_di) == FAIL) { - free(fudi.fd_di); - free(fp); + xfree(fudi.fd_di); + xfree(fp); goto erret; } } else @@ -18075,9 +18075,9 @@ erret: ga_clear_strings(&newargs); ga_clear_strings(&newlines); ret_free: - free(skip_until); - free(fudi.fd_newkey); - free(name); + xfree(skip_until); + xfree(fudi.fd_newkey); + xfree(name); did_emsg |= saved_did_emsg; need_wait_return |= saved_wait_return; } @@ -18389,7 +18389,7 @@ static int function_exists(char_u *name) * "funcname(...", not "funcname!...". */ if (p != NULL && (*nm == NUL || *nm == '(')) n = translated_function_exists(p); - free(p); + xfree(p); return n; } @@ -18496,7 +18496,7 @@ void func_dump_profile(FILE *fd) prof_sort_list(fd, sorttab, st_len, "SELF", TRUE); } - free(sorttab); + xfree(sorttab); } static void @@ -18612,7 +18612,7 @@ script_autoload ( ret = TRUE; } - free(tofree); + xfree(tofree); return ret; } @@ -18702,14 +18702,14 @@ void ex_delfunction(exarg_T *eap) p = eap->arg; name = trans_function_name(&p, eap->skip, 0, &fudi); - free(fudi.fd_newkey); + xfree(fudi.fd_newkey); if (name == NULL) { if (fudi.fd_dict != NULL && !eap->skip) EMSG(_(e_funcref)); return; } if (!ends_excmd(*skipwhite(p))) { - free(name); + xfree(name); EMSG(_(e_trailing)); return; } @@ -18719,7 +18719,7 @@ void ex_delfunction(exarg_T *eap) if (!eap->skip) fp = find_func(name); - free(name); + xfree(name); if (!eap->skip) { if (fp == NULL) { @@ -18755,9 +18755,9 @@ static void func_free(ufunc_T *fp) /* clear this function */ ga_clear_strings(&(fp->uf_args)); ga_clear_strings(&(fp->uf_lines)); - free(fp->uf_tml_count); - free(fp->uf_tml_total); - free(fp->uf_tml_self); + xfree(fp->uf_tml_count); + xfree(fp->uf_tml_total); + xfree(fp->uf_tml_self); /* remove the function from the function hashtable */ hi = hash_find(&func_hashtab, UF2HIKEY(fp)); @@ -18766,7 +18766,7 @@ static void func_free(ufunc_T *fp) else hash_remove(&func_hashtab, hi); - free(fp); + xfree(fp); } /* @@ -19003,7 +19003,7 @@ call_user_func ( s = buf; } msg_puts(s); - free(tofree); + xfree(tofree); } } } @@ -19090,7 +19090,7 @@ call_user_func ( s = buf; } smsg((char_u *)_("%s returning %s"), sourcing_name, s); - free(tofree); + xfree(tofree); } } msg_puts((char_u *)"\n"); /* don't overwrite this either */ @@ -19099,7 +19099,7 @@ call_user_func ( --no_wait_return; } - free(sourcing_name); + xfree(sourcing_name); sourcing_name = save_sourcing_name; sourcing_lnum = save_sourcing_lnum; current_SID = save_current_SID; @@ -19196,7 +19196,7 @@ free_funccal ( for (li = fc->l_varlist.lv_first; li != NULL; li = li->li_next) clear_tv(&li->li_tv); - free(fc); + xfree(fc); } /* @@ -19327,7 +19327,7 @@ int do_return(exarg_T *eap, int reanimate, int is_cmd, void *rettv) clear_tv(current_funccal->rettv); *current_funccal->rettv = *(typval_T *)rettv; if (!is_cmd) - free(rettv); + xfree(rettv); } } @@ -19361,7 +19361,7 @@ char_u *get_return_cmd(void *rettv) STRNCPY(IObuff + 8, s, IOSIZE - 8); if (STRLEN(s) + 8 >= IOSIZE) STRCPY(IObuff + IOSIZE - 4, "..."); - free(tofree); + xfree(tofree); return vim_strsave(IObuff); } @@ -19549,16 +19549,16 @@ int read_viminfo_varlist(vir_T *virp, int writing) * string. */ tv.v_type = VAR_STRING; else { - free(tv.vval.v_string); + xfree(tv.vval.v_string); tv = *etv; - free(etv); + xfree(etv); } } set_var(virp->vir_line + 1, &tv, FALSE); if (tv.v_type == VAR_STRING) - free(tv.vval.v_string); + xfree(tv.vval.v_string); else if (tv.v_type == VAR_DICT || tv.v_type == VAR_LIST) clear_tv(&tv); } @@ -19604,7 +19604,7 @@ void write_viminfo_varlist(FILE *fp) p = echo_string(&this_var->di_tv, &tofree, numbuf, 0); if (p != NULL) viminfo_writestring(fp, p); - free(tofree); + xfree(tofree); } } } @@ -19642,10 +19642,10 @@ int store_session_globals(FILE *fd) (this_var->di_tv.v_type == VAR_STRING) ? '"' : ' ') < 0) || put_eol(fd) == FAIL) { - free(p); + xfree(p); return FAIL; } - free(p); + xfree(p); } else if (this_var->di_tv.v_type == VAR_FLOAT && var_flavour(this_var->di_key) == VAR_FLAVOUR_SESSION) { float_T f = this_var->di_tv.vval.v_float; @@ -19676,7 +19676,7 @@ void last_set_msg(scid_T scriptID) verbose_enter(); MSG_PUTS(_("\n\tLast set from ")); MSG_PUTS(p); - free(p); + xfree(p); verbose_leave(); } } @@ -19756,7 +19756,7 @@ repeat: #endif ) { *fnamep = expand_env_save(*fnamep); - free(*bufp); /* free any allocated file name */ + xfree(*bufp); /* free any allocated file name */ *bufp = *fnamep; if (*fnamep == NULL) return -1; @@ -19776,7 +19776,7 @@ repeat: /* FullName_save() is slow, don't use it when not needed. */ if (*p != NUL || !vim_isAbsName(*fnamep)) { *fnamep = FullName_save(*fnamep, *p != NUL); - free(*bufp); /* free any allocated file name */ + xfree(*bufp); /* free any allocated file name */ *bufp = *fnamep; if (*fnamep == NULL) return -1; @@ -19786,7 +19786,7 @@ repeat: if (os_isdir(*fnamep)) { /* Make room for one or two extra characters. */ *fnamep = vim_strnsave(*fnamep, (int)STRLEN(*fnamep) + 2); - free(*bufp); /* free any allocated file name */ + xfree(*bufp); /* free any allocated file name */ *bufp = *fnamep; if (*fnamep == NULL) return -1; @@ -19822,7 +19822,7 @@ repeat: if (s != NULL) { *fnamep = s; if (pbuf != NULL) { - free(*bufp); /* free any allocated file name */ + xfree(*bufp); /* free any allocated file name */ *bufp = pbuf; pbuf = NULL; } @@ -19833,11 +19833,11 @@ repeat: if (*dirname == '~') { s = vim_strsave(dirname); *fnamep = s; - free(*bufp); + xfree(*bufp); *bufp = s; } } - free(pbuf); + xfree(pbuf); } } @@ -19855,7 +19855,7 @@ repeat: *fnamelen = (int)(tail - *fnamep); if (*fnamelen == 0) { /* Result is empty. Turn it into "." to make ":cd %:h" work. */ - free(*bufp); + xfree(*bufp); *bufp = *fnamep = tail = vim_strsave((char_u *)"."); *fnamelen = 1; } else { @@ -19940,13 +19940,13 @@ repeat: s = do_string_sub(str, pat, sub, flags); *fnamep = s; *fnamelen = (int)STRLEN(s); - free(*bufp); + xfree(*bufp); *bufp = s; didit = TRUE; - free(sub); - free(str); + xfree(sub); + xfree(str); } - free(pat); + xfree(pat); } /* after using ":s", repeat all the modifiers */ if (didit) @@ -19956,7 +19956,7 @@ repeat: if (src[*usedlen] == ':' && src[*usedlen + 1] == 'S') { p = vim_strsave_shellescape(*fnamep, false, false); - free(*bufp); + xfree(*bufp); *bufp = *fnamep = p; *fnamelen = (int)STRLEN(p); *usedlen += 2; @@ -20099,7 +20099,7 @@ static inline Job *common_job_start(JobOptions opts, typval_T *rettv) if (rettv->vval.v_number <= 0) { if (rettv->vval.v_number == 0) { EMSG(_(e_jobtblfull)); - free(opts.term_name); + xfree(opts.term_name); free_term_job_data(data); } else { EMSG(_(e_jobexe)); @@ -20125,7 +20125,7 @@ static inline void free_term_job_data(TerminalJobData *data) { data->self->internal_refcount--; dict_unref(data->self); } - free(data); + xfree(data); } static inline bool is_user_job(Job *job) @@ -20236,7 +20236,7 @@ static void on_job_exit(Job *job, int status, void *d) static void term_write(char *buf, size_t size, void *data) { Job *job = ((TerminalJobData *)data)->job; - WBuffer *wbuf = wstream_new_buffer(xmemdup(buf, size), size, 1, free); + WBuffer *wbuf = wstream_new_buffer(xmemdup(buf, size), size, 1, xfree); job_write(job, wbuf); } @@ -20310,7 +20310,7 @@ end: // exit event, safe to free job data now term_job_data_decref(ev->data); } - free(ev); + xfree(ev); } static void script_host_eval(char *name, typval_T *argvars, typval_T *rettv) |