$OpenBSD: patch-src_e-mail-formatter-evolution-rss_c,v 1.5 2019/01/02 13:07:49 ajacoutot Exp $

From 7741ef0cf3327cb5c719912358443b6aef3bdb59 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Wed, 17 Aug 2016 18:43:48 +0200
Subject: Adapt to changes in evolution 3.21.90

From fc88879852be20917ba1c1923ab77c8b5bc868ed Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Wed, 10 Oct 2018 14:12:42 +0200
Subject: [PATCH] Avoid crash when feed formatting is cancelled

Index: src/e-mail-formatter-evolution-rss.c
--- src/e-mail-formatter-evolution-rss.c.orig
+++ src/e-mail-formatter-evolution-rss.c
@@ -52,6 +52,7 @@ G_DEFINE_DYNAMIC_TYPE (
 
 static const gchar* rss_formatter_mime_types[] = { "x-evolution/evolution-rss-feed", NULL };
 
+#if EVOLUTION_VERSION < 32190
 static void
 set_view_cb (GtkWidget *button,
 		gpointer *data)
@@ -60,6 +61,8 @@ set_view_cb (GtkWidget *button,
 	rss_set_changed_view(1);
 	e_mail_display_reload (rss_get_display());
 }
+#endif
+
 #include "fetch.h"
 
 typedef struct _HD HD;
@@ -132,7 +135,11 @@ emfe_evolution_rss_format (EMailFormatterExtension *ex
 	if (!rss_init)
 			goto fail;
 
+#if EVOLUTION_VERSION >= 32190
+	h = e_web_view_get_content_html_sync (E_WEB_VIEW (rss_get_display()), NULL, NULL);
+#else
 	h = g_strdup(e_web_view_get_html (E_WEB_VIEW (rss_get_display())));
+#endif
 
 	website = (gchar *)camel_medium_get_header (
 			CAMEL_MEDIUM (message), "Website");
@@ -232,6 +239,11 @@ emfe_evolution_rss_format (EMailFormatterExtension *ex
 			strlen(str), NULL, cancellable, NULL);
 #endif
 
+		g_free (str);
+
+		if (g_cancellable_is_cancelled (cancellable))
+			goto fail;
+
 #if EVOLUTION_VERSION < 31191
 		decoded_stream = camel_stream_mem_new ();
 #else
@@ -241,6 +253,11 @@ emfe_evolution_rss_format (EMailFormatterExtension *ex
 		e_mail_formatter_format_text (
 			formatter, part, decoded_stream, cancellable);
 
+		if (g_cancellable_is_cancelled (cancellable)) {
+			g_clear_object (&decoded_stream);
+			goto fail;
+		}
+
 #if EVOLUTION_VERSION < 31191
 		g_seekable_seek (G_SEEKABLE (decoded_stream), 0, G_SEEK_SET, cancellable, NULL);
 
@@ -253,6 +270,11 @@ emfe_evolution_rss_format (EMailFormatterExtension *ex
 				G_MEMORY_OUTPUT_STREAM (decoded_stream));
 		src = rss_process_feed((gchar *)data, len);
 #endif
+		if (g_cancellable_is_cancelled (cancellable) || !src) {
+			g_clear_object (&decoded_stream);
+			g_free (src);
+			goto fail;
+		}
 #if EVOLUTION_VERSION < 30304
 		GConfClient *client = gconf_client_get_default();
 #else
@@ -306,6 +328,8 @@ emfe_evolution_rss_format (EMailFormatterExtension *ex
 		g_free(tstr);
 		}
 #endif
+		if (g_cancellable_is_cancelled (cancellable))
+			goto fail;
 	} else {
 		GString *content;
 		GError *err = NULL;
@@ -348,6 +372,10 @@ emfe_evolution_rss_format (EMailFormatterExtension *ex
 			}
 #endif
 			g_free (str);
+
+			if (g_cancellable_is_cancelled (cancellable))
+				goto fail;
+
 			goto success;
 		}
 
@@ -375,6 +403,7 @@ e_mail_formatter_evolution_rss_type_register (GTypeMod
 	e_mail_formatter_evolution_rss_register_type (type_module);
 }
 
+#if EVOLUTION_VERSION < 32190
 static GtkWidget *
 emfe_evolution_rss_get_widget (EMailFormatterExtension *extension,
 				EMailPartList *context,
@@ -399,13 +428,16 @@ emfe_evolution_rss_get_widget (EMailFormatterExtension
 	gtk_widget_show(box);
 	return box;
 }
+#endif
 
 static void
 e_mail_formatter_evolution_rss_class_init (EMailFormatterExtensionClass *class)
 {
 	class->mime_types = rss_formatter_mime_types;
 	class->format = emfe_evolution_rss_format;
+#if EVOLUTION_VERSION < 32190
 	class->get_widget = emfe_evolution_rss_get_widget;
+#endif
 	class->display_name = _("Evolution-RSS");
 	class->description = _("Displaying RSS feed articles");
 }
