From 0ec65e7a2aaabf2f979aec9a9cf73c1578bd5eb4 Mon Sep 17 00:00:00 2001
From: marcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>
Date: Sun, 11 Apr 2010 16:50:29 +0000
Subject: Fix crash when switching modules by making the addressbook module
 resident.

git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@14038 df743ca5-7f9a-e211-a948-0013205c9059
---
 mail/evolution/Makefile                               |  3 ++-
 ...modules_addressbook_evolution-module-addressbook.c | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 mail/evolution/files/patch-modules_addressbook_evolution-module-addressbook.c

(limited to 'mail')

diff --git a/mail/evolution/Makefile b/mail/evolution/Makefile
index 8fbfbb7e8..ac6d018bd 100644
--- a/mail/evolution/Makefile
+++ b/mail/evolution/Makefile
@@ -3,11 +3,12 @@
 # Whom:					Ade Lovett <ade@FreeBSD.org>
 #
 # $FreeBSD$
-#   $MCom: ports/mail/evolution/Makefile,v 1.219 2010/03/15 12:36:30 kwm Exp $
+#   $MCom: ports/mail/evolution/Makefile,v 1.220 2010/04/01 11:17:55 kwm Exp $
 #
 
 PORTNAME=	evolution
 PORTVERSION=	2.30.0.1
+PORTREVISION=	1
 CATEGORIES=	mail gnome
 MASTER_SITES=	GNOME
 DIST_SUBDIR=	gnome2
diff --git a/mail/evolution/files/patch-modules_addressbook_evolution-module-addressbook.c b/mail/evolution/files/patch-modules_addressbook_evolution-module-addressbook.c
new file mode 100644
index 000000000..0df6bd970
--- /dev/null
+++ b/mail/evolution/files/patch-modules_addressbook_evolution-module-addressbook.c
@@ -0,0 +1,19 @@
+--- modules/addressbook/evolution-module-addressbook.c.orig	2010-04-11 12:47:18.000000000 -0400
++++ modules/addressbook/evolution-module-addressbook.c	2010-04-11 12:48:06.000000000 -0400
+@@ -47,3 +47,16 @@ G_MODULE_EXPORT void
+ e_module_unload (GTypeModule *type_module)
+ {
+ }
++
++G_MODULE_EXPORT const gchar *
++g_module_check_init (GModule *module)
++{
++	/* FIXME Until addressbook is split into a module library and a
++	 *       reusable shared library, prevent the module from
++	 *       being unloaded.  Unloading the module resets all
++	 *       static variables, which screws up foo_get_type()
++	 *       functions among other things. */
++	g_module_make_resident (module);
++
++	return NULL;
++}
-- 
cgit v1.2.3