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
index 483a9b0..788a9f5 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6988,8 +6988,22 @@
* 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
index 21a910d..11d2ff2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 660,
+/**/
659,
/**/
658,