summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--capplets/theme-switcher/ChangeLog6
-rw-r--r--capplets/theme-switcher/gnome-theme-details.c37
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);
}