--- x/src/sge_utils.c 2011-08-01 21:29:27 +0000 +++ x/src/sge_utils.c 2018-02-05 07:39:25 +0000 @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include #include #include @@ -30,7 +31,8 @@ { gchar *full_pathname; GdkPixbuf *pixbuf = NULL; - GError *error; + GError *error = NULL; + GFile *file; full_pathname = g_strconcat(DATADIR "/pixmaps/", filename, @@ -38,13 +40,25 @@ if (g_file_test(full_pathname, G_FILE_TEST_IS_REGULAR)) { pixbuf = rsvg_pixbuf_from_file_at_size (full_pathname, width, height, &error); - g_free (full_pathname); + if (pixbuf == NULL) { + // Some versions of librsvg need URI instead of path. + // https://gitlab.gnome.org/GNOME/librsvg/issues/198 + g_clear_error (&error); + file = g_file_new_for_path (full_pathname); + g_free (full_pathname); + full_pathname = g_file_get_uri (file); + g_object_unref (file); + pixbuf = rsvg_pixbuf_from_file_at_size (full_pathname, width, + height, &error); + } if (pixbuf == NULL) - g_free (error); + g_error_free (error); } else g_warning ("%s not found", filename); + g_free (full_pathname); + return pixbuf; }