thunar: Fix segfault in case no icon-theme is selected/installed

The patch was sent to xfce bug list [1]. As long as it not applied, make
thunar work for us.

[1] https://bugzilla.xfce.org/show_bug.cgi?id=7880

Signed-off-by: Andreas Mueller <schnitzeltony@gmx.de>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
This commit is contained in:
Andreas Müller 2011-08-12 06:21:22 +00:00 committed by Koen Kooi
parent 1eaf2af7ee
commit 187c1c9bb8
2 changed files with 63 additions and 5 deletions

View File

@ -0,0 +1,61 @@
From 5066ca4983d82352fca078525e2be454b263fdfd Mon Sep 17 00:00:00 2001
From: Andreas Mueller <schnitzeltony@gmx.de>
Date: Thu, 11 Aug 2011 10:00:33 +0200
Subject: [PATCH] Fix segfaults in case icons are missing or not found
Signed-off-by: Andreas Mueller <schnitzeltony@gmx.de>
---
thunar/thunar-location-button.c | 7 +++++--
thunar/thunar-window.c | 13 +++++++++----
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/thunar/thunar-location-button.c b/thunar/thunar-location-button.c
index 49be1f4..20d7110 100644
--- a/thunar/thunar-location-button.c
+++ b/thunar/thunar-location-button.c
@@ -462,9 +462,12 @@ thunar_location_button_file_changed (ThunarLocationButton *location_button,
/* update the icon for the image */
icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
icon = thunar_icon_factory_load_file_icon (icon_factory, file, location_button->file_icon_state, size);
- gtk_image_set_from_pixbuf (GTK_IMAGE (location_button->image), icon);
+ if (G_LIKELY (icon != NULL))
+ {
+ gtk_image_set_from_pixbuf (GTK_IMAGE (location_button->image), icon);
+ g_object_unref (G_OBJECT (icon));
+ }
g_object_unref (G_OBJECT (icon_factory));
- g_object_unref (G_OBJECT (icon));
/* show the image widget */
gtk_widget_show (location_button->image);
diff --git a/thunar/thunar-window.c b/thunar/thunar-window.c
index d258d8f..2ed1af7 100644
--- a/thunar/thunar-window.c
+++ b/thunar/thunar-window.c
@@ -2410,13 +2410,18 @@ thunar_window_current_directory_changed (ThunarFile *current_directory,
gtk_action_set_sensitive (action, (thunar_file_get_item_count (current_directory) > 0));
gtk_action_set_visible (action, (thunar_file_is_root (current_directory) && thunar_file_is_trashed (current_directory)));
- /* set window title and icon */
+ /* set window title */
title = g_strdup_printf ("%s - %s", thunar_file_get_display_name (current_directory), _("File Manager"));
- icon = thunar_icon_factory_load_file_icon (window->icon_factory, current_directory, THUNAR_FILE_ICON_STATE_DEFAULT, 48);
gtk_window_set_title (GTK_WINDOW (window), title);
- gtk_window_set_icon (GTK_WINDOW (window), icon);
- g_object_unref (G_OBJECT (icon));
g_free (title);
+
+ /* set window icon */
+ icon = thunar_icon_factory_load_file_icon (window->icon_factory, current_directory, THUNAR_FILE_ICON_STATE_DEFAULT, 48);
+ if (G_LIKELY (icon != NULL))
+ {
+ gtk_window_set_icon (GTK_WINDOW (window), icon);
+ g_object_unref (G_OBJECT (icon));
+ }
}
--
1.7.4.4

View File

@ -4,21 +4,18 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
DEPENDS = "exo gtk+ gdk-pixbuf libxfce4util libxfce4ui libsm dbus-glib startup-notification libnotify"
PR = "r0"
PR = "r1"
inherit xfce
# SRC_URI must follow inherited one
SRC_URI = "http://archive.xfce.org/src/xfce/${PN}/${@'${PV}'[0:3]}/Thunar-${PV}.tar.bz2 \
file://relative-symlinks-docs.patch \
file://fix-segfault-no-icons.patch \
"
S = "${WORKDIR}/Thunar-${PV}/"
# no/minimum(default)/yes/full(fails <- Werror)
#EXTRA_OECONF += "--enable-debug=yes"
FILES_${PN} += "${libdir}/thunarx-2/* \
${libdir}/xfce4/panel/plugins/* \
${libdir}/Thunar/[Tt]hunar* \