From 7eeb3afb397cc595cb336a98a68917cefaad3de6 Mon Sep 17 00:00:00 2001 From: Jens Granseuer Date: Tue, 3 Apr 2007 21:05:11 +0000 Subject: [PATCH] don't crash if the color string is mangled, and close a small memory leak 2007-04-03 Jens Granseuer * gnome-theme-details.c: (update_color_buttons_from_string): don't crash if the color string is mangled, and close a small memory leak svn path=/trunk/; revision=7439 --- capplets/theme-switcher/ChangeLog | 6 ++++ capplets/theme-switcher/gnome-theme-details.c | 35 +++++++++---------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/capplets/theme-switcher/ChangeLog b/capplets/theme-switcher/ChangeLog index 6b2ee17b8..309aa8650 100644 --- a/capplets/theme-switcher/ChangeLog +++ b/capplets/theme-switcher/ChangeLog @@ -1,3 +1,9 @@ +2007-04-03 Jens Granseuer + + * 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 * 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; + if (color_scheme_pair[0] != NULL && color_scheme_pair[1] != NULL) + { + g_strstrip (color_scheme_pair[0]); + g_strstrip (color_scheme_pair[1]); - 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 (!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); }