diff options
-rw-r--r-- | capplets/theme-switcher/ChangeLog | 6 | ||||
-rw-r--r-- | capplets/theme-switcher/gnome-theme-details.c | 37 |
2 files changed, 24 insertions, 19 deletions
diff --git a/capplets/theme-switcher/ChangeLog b/capplets/theme-switcher/ChangeLog index 6b2ee17b8..a0a986377 100644 --- a/capplets/theme-switcher/ChangeLog +++ b/capplets/theme-switcher/ChangeLog @@ -1,3 +1,9 @@ +2007-04-04 Jens Granseuer <jensgr@gmx.net> + + * gnome-theme-details.c: (update_color_buttons_from_string): + don't crash if the color string is mangled, and close a small + memory leak + 2007-03-21 Frederic Crozat <fcrozat@mandriva.com> * gnome-theme-details.c: (update_color_scheme_tab): diff --git a/capplets/theme-switcher/gnome-theme-details.c b/capplets/theme-switcher/gnome-theme-details.c index 1c350badb..096c8d668 100644 --- a/capplets/theme-switcher/gnome-theme-details.c +++ b/capplets/theme-switcher/gnome-theme-details.c @@ -902,25 +902,24 @@ update_color_buttons_from_string (gchar *color_scheme) { color_scheme_pair = g_strsplit (current_string, ":", 0); - if (color_scheme_pair[0] == NULL) - continue; - - g_strstrip (color_scheme_pair[0]); - g_strstrip (color_scheme_pair[1]); - - - if (!strcmp ("fg_color", color_scheme_pair[0])) - gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[0]); - else if (!strcmp ("bg_color", color_scheme_pair[0])) - gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[1]); - else if (!strcmp ("text_color", color_scheme_pair[0])) - gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[2]); - else if (!strcmp ("base_color", color_scheme_pair[0])) - gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[3]); - else if (!strcmp ("selected_fg_color", color_scheme_pair[0])) - gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[4]); - else if (!strcmp ("selected_bg_color", color_scheme_pair[0])) - gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[5]); + if (color_scheme_pair[0] != NULL && color_scheme_pair[1] != NULL) + { + g_strstrip (color_scheme_pair[0]); + g_strstrip (color_scheme_pair[1]); + + if (!strcmp ("fg_color", color_scheme_pair[0])) + gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[0]); + else if (!strcmp ("bg_color", color_scheme_pair[0])) + gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[1]); + else if (!strcmp ("text_color", color_scheme_pair[0])) + gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[2]); + else if (!strcmp ("base_color", color_scheme_pair[0])) + gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[3]); + else if (!strcmp ("selected_fg_color", color_scheme_pair[0])) + gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[4]); + else if (!strcmp ("selected_bg_color", color_scheme_pair[0])) + gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[5]); + } g_strfreev (color_scheme_pair); } |