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,