Mercurial > vim
changeset 1941:d92358c7d621 v7.2.238
updated for version 7.2-238
author | vimboss |
---|---|
date | Wed, 22 Jul 2009 12:28:17 +0000 |
parents | e753954c86e2 |
children | fe26299d6f70 |
files | src/option.c src/proto/option.pro src/term.c src/version.c |
diffstat | 4 files changed, 29 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/option.c +++ b/src/option.c @@ -403,8 +403,9 @@ struct vimoption #define P_NUM 0x02 /* the option is numeric */ #define P_STRING 0x04 /* the option is a string */ #define P_ALLOCED 0x08 /* the string option is in allocated memory, - must use vim_free() when assigning new - value. Not set if default is the same. */ + must use free_string_option() when + assigning new value. Not set if default is + the same. */ #define P_EXPAND 0x10 /* environment expansion. NOTE: P_EXPAND can never be used for local or hidden options! */ #define P_NODEFAULT 0x40 /* don't set to default value */ @@ -8927,6 +8928,28 @@ free_termoptions() } /* + * Free the string for one term option, if it was allocated. + * Set the string to empty_option and clear allocated flag. + * "var" points to the option value. + */ + void +free_one_termoption(var) + char_u *var; +{ + struct vimoption *p; + + for (p = &options[0]; p->fullname != NULL; p++) + if (p->var == var) + { + if (p->flags & P_ALLOCED) + free_string_option(*(char_u **)(p->var)); + *(char_u **)(p->var) = empty_option; + p->flags &= ~P_ALLOCED; + break; + } +} + +/* * Set the terminal option defaults to the current value. * Used after setting the terminal name. */
--- a/src/proto/option.pro +++ b/src/proto/option.pro @@ -29,6 +29,7 @@ int makeset __ARGS((FILE *fd, int opt_fl int makefoldset __ARGS((FILE *fd)); void clear_termoptions __ARGS((void)); void free_termoptions __ARGS((void)); +void free_one_termoption __ARGS((char_u *var)); void set_term_defaults __ARGS((void)); void comp_col __ARGS((void)); char_u *get_equalprg __ARGS((void));