# HG changeset patch # User Bram Moolenaar # Date 1426247617 -3600 # Node ID 476a12a96bb1e5ccc71b1c1010d529deca271617 # Parent 48aaf49a6947e0b5b4ded4a4fa50e8c9cbe5115b updated for version 7.4.660 Problem: Using freed memory when g:colors_name is changed in the colors script. (oni-link) Solution: Make a copy of the variable value. diff --git a/src/syntax.c b/src/syntax.c --- a/src/syntax.c +++ b/src/syntax.c @@ -6988,8 +6988,22 @@ init_highlight(both, reset) * and 'background' or 't_Co' is changed. */ p = get_var_value((char_u *)"g:colors_name"); - if (p != NULL && load_colors(p) == OK) - return; + if (p != NULL) + { + /* The value of g:colors_name could be freed when sourcing the script, + * making "p" invalid, so copy it. */ + char_u *copy_p = vim_strsave(p); + int r; + + if (copy_p != NULL) + { + r = load_colors(copy_p); + vim_free(copy_p); + if (r == OK) + return; + } + } + #endif /* diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 660, +/**/ 659, /**/ 658,