Mercurial > vim
comparison src/eval.c @ 13244:ac42c4b11dbc v8.0.1496
patch 8.0.1496: clearing a pointer takes two lines
commit https://github.com/vim/vim/commit/d23a823669d93fb2a570a039173eefe4856ac806
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 10 18:45:26 2018 +0100
patch 8.0.1496: clearing a pointer takes two lines
Problem: Clearing a pointer takes two lines.
Solution: Add VIM_CLEAR() and replace vim_clear(). (Hirohito Higashi,
closes #2629)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 10 Feb 2018 19:00:07 +0100 |
parents | 6e81a68d63a1 |
children | 69278c25429d |
comparison
equal
deleted
inserted
replaced
13243:899b19739188 | 13244:ac42c4b11dbc |
---|---|
359 | 359 |
360 for (i = 0; i < VV_LEN; ++i) | 360 for (i = 0; i < VV_LEN; ++i) |
361 { | 361 { |
362 p = &vimvars[i]; | 362 p = &vimvars[i]; |
363 if (p->vv_di.di_tv.v_type == VAR_STRING) | 363 if (p->vv_di.di_tv.v_type == VAR_STRING) |
364 { | 364 VIM_CLEAR(p->vv_str); |
365 vim_free(p->vv_str); | |
366 p->vv_str = NULL; | |
367 } | |
368 else if (p->vv_di.di_tv.v_type == VAR_LIST) | 365 else if (p->vv_di.di_tv.v_type == VAR_LIST) |
369 { | 366 { |
370 list_unref(p->vv_list); | 367 list_unref(p->vv_list); |
371 p->vv_list = NULL; | 368 p->vv_list = NULL; |
372 } | 369 } |
567 set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)"."); | 564 set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)"."); |
568 clear_lval(redir_lval); | 565 clear_lval(redir_lval); |
569 } | 566 } |
570 | 567 |
571 /* free the collected output */ | 568 /* free the collected output */ |
572 vim_free(redir_ga.ga_data); | 569 VIM_CLEAR(redir_ga.ga_data); |
573 redir_ga.ga_data = NULL; | 570 |
574 | 571 VIM_CLEAR(redir_lval); |
575 vim_free(redir_lval); | 572 } |
576 redir_lval = NULL; | 573 VIM_CLEAR(redir_varname); |
577 } | |
578 vim_free(redir_varname); | |
579 redir_varname = NULL; | |
580 } | 574 } |
581 | 575 |
582 # if defined(FEAT_MBYTE) || defined(PROTO) | 576 # if defined(FEAT_MBYTE) || defined(PROTO) |
583 int | 577 int |
584 eval_charconvert( | 578 eval_charconvert( |
1007 { | 1001 { |
1008 typval_T *tv; | 1002 typval_T *tv; |
1009 | 1003 |
1010 tv = (typval_T *)alloc(sizeof(typval_T)); | 1004 tv = (typval_T *)alloc(sizeof(typval_T)); |
1011 if (tv != NULL && eval0(arg, tv, nextcmd, TRUE) == FAIL) | 1005 if (tv != NULL && eval0(arg, tv, nextcmd, TRUE) == FAIL) |
1012 { | 1006 VIM_CLEAR(tv); |
1013 vim_free(tv); | |
1014 tv = NULL; | |
1015 } | |
1016 | 1007 |
1017 return tv; | 1008 return tv; |
1018 } | 1009 } |
1019 | 1010 |
1020 | 1011 |
3211 | 3202 |
3212 /* v: variables */ | 3203 /* v: variables */ |
3213 if (vidx < VV_LEN) | 3204 if (vidx < VV_LEN) |
3214 return cat_prefix_varname('v', (char_u *)vimvars[vidx++].vv_name); | 3205 return cat_prefix_varname('v', (char_u *)vimvars[vidx++].vv_name); |
3215 | 3206 |
3216 vim_free(varnamebuf); | 3207 VIM_CLEAR(varnamebuf); |
3217 varnamebuf = NULL; | |
3218 varnamebuflen = 0; | 3208 varnamebuflen = 0; |
3219 return NULL; | 3209 return NULL; |
3220 } | 3210 } |
3221 | 3211 |
3222 #endif /* FEAT_CMDL_COMPL */ | 3212 #endif /* FEAT_CMDL_COMPL */ |
6094 vim_free(string); | 6084 vim_free(string); |
6095 | 6085 |
6096 /* next try expanding things like $VIM and ${HOME} */ | 6086 /* next try expanding things like $VIM and ${HOME} */ |
6097 string = expand_env_save(name - 1); | 6087 string = expand_env_save(name - 1); |
6098 if (string != NULL && *string == '$') | 6088 if (string != NULL && *string == '$') |
6099 { | 6089 VIM_CLEAR(string); |
6100 vim_free(string); | |
6101 string = NULL; | |
6102 } | |
6103 } | 6090 } |
6104 name[len] = cc; | 6091 name[len] = cc; |
6105 | 6092 |
6106 rettv->v_type = VAR_STRING; | 6093 rettv->v_type = VAR_STRING; |
6107 rettv->vval.v_string = string; | 6094 rettv->vval.v_string = string; |
7114 { | 7101 { |
7115 case VAR_FUNC: | 7102 case VAR_FUNC: |
7116 func_unref(varp->vval.v_string); | 7103 func_unref(varp->vval.v_string); |
7117 /* FALLTHROUGH */ | 7104 /* FALLTHROUGH */ |
7118 case VAR_STRING: | 7105 case VAR_STRING: |
7119 vim_free(varp->vval.v_string); | 7106 VIM_CLEAR(varp->vval.v_string); |
7120 varp->vval.v_string = NULL; | |
7121 break; | 7107 break; |
7122 case VAR_PARTIAL: | 7108 case VAR_PARTIAL: |
7123 partial_unref(varp->vval.v_partial); | 7109 partial_unref(varp->vval.v_partial); |
7124 varp->vval.v_partial = NULL; | 7110 varp->vval.v_partial = NULL; |
7125 break; | 7111 break; |