$OpenBSD: patch-src_rss-config-factory_c,v 1.6 2013/02/01 16:09:37 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	Sun Sep  2 21:06:02 2012
+++ src/rss-config-factory.c	Fri Feb  1 17:03:35 2013
@@ -1856,6 +1856,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;
 
@@ -1867,13 +1868,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));
