+2008-10-20 Christian Persch <chpe@gnome.org>
+
+ Bug 557059 – crash when compositing emblems with icon
+
+ * gtk/gtkicontheme.c: (apply_emblems): Copy the pixbuf before using it
+ with gtk_pixbuf_composite, in case its pixdata is read-only (mmaped
+ from icon cache or builtins).
+
2008-10-20 Murray Cumming <murrayc@murrayc.com>
* gtk/gtkiconview.c: gtk_icon_view_set_tooltip_row(),
static void
apply_emblems (GtkIconInfo *info)
{
- GdkPixbuf *icon;
+ GdkPixbuf *icon = NULL;
gint w, h, pos;
GSList *l;
- icon = info->pixbuf;
- w = gdk_pixbuf_get_width (icon);
- h = gdk_pixbuf_get_height (icon);
+ if (info->emblem_infos == NULL)
+ return;
+
+ w = gdk_pixbuf_get_width (info->pixbuf);
+ h = gdk_pixbuf_get_height (info->pixbuf);
for (l = info->emblem_infos, pos = 0; l; l = l->next, pos++)
{
break;
}
+ if (icon == NULL)
+ {
+ icon = gdk_pixbuf_copy (info->pixbuf);
+ if (icon == NULL)
+ break;
+ }
+
gdk_pixbuf_composite (emblem, icon, x, y, ew, eh, x, y,
scale, scale, GDK_INTERP_BILINEAR, 255);
}
}
+
+ if (icon)
+ {
+ g_object_unref (info->pixbuf);
+ info->pixbuf = icon;
+ }
}
/* This function contains the complicated logic for deciding