openbsd-ports/mail/evolution-rss/patches/patch-src_rss-config-factory_c
2013-04-13 12:36:26 +00:00

49 lines
1.7 KiB
Plaintext

$OpenBSD: patch-src_rss-config-factory_c,v 1.7 2013/04/13 12:36:26 ajacoutot Exp $
From 88979b7c9f609299443f87882a8d7f2e29b9d5e9 Mon Sep 17 00:00:00 2001
From: Lucian Langa <lucilanga@gnome.org>
Date: Tue, 22 Jan 2013 08:00:44 +0000
Subject: avoid crash in editing feeds in list
--- src/rss-config-factory.c.orig Tue Jan 8 16:44:05 2013
+++ src/rss-config-factory.c Sat Apr 13 14:25:33 2013
@@ -1849,6 +1849,7 @@ feeds_dialog_edit(GtkDialog *d, gpointer data)
GtkTreeModel *model;
GtkTreeIter iter;
gchar *name, *feed_name;
+ gchar *tmp_feed_name;
gpointer key;
add_feed *feed = NULL;
@@ -1860,13 +1861,23 @@ feeds_dialog_edit(GtkDialog *d, gpointer data)
&iter,
3, &feed_name,
-1);
- key = lookup_key(feed_name);
- name = g_hash_table_lookup(rf->hr, key);
- if (name) {
- feed = create_dialog_add(name, feed_name);
- if (feed->dialog)
- gtk_widget_destroy(feed->dialog);
- process_dialog_edit(feed, name, feed_name);
+ /* seems we get the data from gtk_tree with html entities already translated
+ * so instead of adding versioned defs we fallback to decoding html entities
+ * in case key is not found, and in case that fails too we exit gracefully
+ */
+ if (!(key = lookup_key(feed_name))) {
+ tmp_feed_name = feed_name;
+ feed_name = decode_entities(feed_name);
+ g_free(tmp_feed_name);
+ key = lookup_key(feed_name);
+ }
+ if (key) {
+ if (name = g_hash_table_lookup(rf->hr, key)) {
+ feed = create_dialog_add(name, feed_name);
+ if (feed->dialog)
+ gtk_widget_destroy(feed->dialog);
+ process_dialog_edit(feed, name, feed_name);
+ }
}
if (feed && feed->feed_url)
store_redraw(GTK_TREE_VIEW(rf->treeview));