summaryrefslogtreecommitdiff
path: root/capplets/theme-switcher
diff options
context:
space:
mode:
authorKjartan Maraas <kmaraas@src.gnome.org>2003-04-29 19:37:34 +0000
committerKjartan Maraas <kmaraas@src.gnome.org>2003-04-29 19:37:34 +0000
commit3fb5f240ae071273d663d830d4a07f6511931fbd (patch)
tree58c3544c78630d6e44d1a88726f3ab8faaa5ded6 /capplets/theme-switcher
parenta3e69e90793987185f824555e04ed965967bb84d (diff)
downloadgnome-control-center-3fb5f240ae071273d663d830d4a07f6511931fbd.tar.gz
Hmm? Broken pipe?
Diffstat (limited to 'capplets/theme-switcher')
-rw-r--r--capplets/theme-switcher/ChangeLog6
-rw-r--r--capplets/theme-switcher/theme-thumbnail.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/capplets/theme-switcher/ChangeLog b/capplets/theme-switcher/ChangeLog
index aea3157e0..453c52adf 100644
--- a/capplets/theme-switcher/ChangeLog
+++ b/capplets/theme-switcher/ChangeLog
@@ -1,3 +1,9 @@
+2003-04-29 Kjartan Maraas <kmaraas@gnome.org>
+
+ * theme-thumbnail.c: (message_from_capplet), (message_from_child),
+ (generate_theme_thumbnail), (theme_thumbnail_factory_init): Plug
+ leaks and guard against invalid reads reported by valgrind.
+
Wed Feb 5 17:03:26 2003 Jonathan Blandford <jrb@gnome.org>
* gnome-theme-manager.[ch] (get_default_string_from_key): get the
diff --git a/capplets/theme-switcher/theme-thumbnail.c b/capplets/theme-switcher/theme-thumbnail.c
index 57c78587d..f9e8549a4 100644
--- a/capplets/theme-switcher/theme-thumbnail.c
+++ b/capplets/theme-switcher/theme-thumbnail.c
@@ -349,6 +349,7 @@ message_from_capplet (GIOChannel *source,
{
write (pipe_from_factory_fd[1], pixels + (rowstride)*i, ICON_SIZE_WIDTH * gdk_pixbuf_get_n_channels (pixbuf));
}
+ g_object_unref (pixbuf);
theme_thumbnail_data->status = READY_FOR_THEME;
g_byte_array_set_size (theme_thumbnail_data->control_theme_name, 0);
g_byte_array_set_size (theme_thumbnail_data->wm_theme_name, 0);
@@ -404,7 +405,7 @@ message_from_child (GIOChannel *source,
memcpy (pixels + rowstride * i, async_data.data->data + 4 * ICON_SIZE_WIDTH * i, ICON_SIZE_WIDTH * 4);
scaled_pixbuf = gdk_pixbuf_scale_simple (pixbuf, ICON_SIZE_WIDTH/2, ICON_SIZE_HEIGHT/2, GDK_INTERP_BILINEAR);
- g_hash_table_insert (theme_hash, async_data.meta_theme_name, scaled_pixbuf);
+ g_hash_table_insert (theme_hash, g_strdup(async_data.meta_theme_name), scaled_pixbuf);
g_object_unref (pixbuf);
(* async_data.func) (scaled_pixbuf, async_data.user_data);
@@ -498,7 +499,7 @@ generate_theme_thumbnail (GnomeThemeMetaInfo *meta_theme_info,
retval = gdk_pixbuf_scale_simple (pixbuf, ICON_SIZE_WIDTH/2, ICON_SIZE_HEIGHT/2, GDK_INTERP_BILINEAR);
g_object_unref (pixbuf);
- g_hash_table_insert (theme_hash, meta_theme_info->name, retval);
+ g_hash_table_insert (theme_hash, g_strdup (meta_theme_info->name), retval);
return retval;
}
@@ -590,5 +591,5 @@ theme_thumbnail_factory_init (int argc, char *argv[])
async_data.meta_theme_name = NULL;
async_data.data = g_byte_array_new ();
- theme_hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_object_unref);
+ theme_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
}