Blame SOURCES/evolution-data-server-3.8.5-imapx-server-dispose-block.patch

9cfe9a
diff -up evolution-data-server-3.8.5/camel/camel-imapx-server.c.eds evolution-data-server-3.8.5/camel/camel-imapx-server.c
9cfe9a
--- evolution-data-server-3.8.5/camel/camel-imapx-server.c.eds	2013-11-07 09:46:45.524877569 +0100
9cfe9a
+++ evolution-data-server-3.8.5/camel/camel-imapx-server.c	2013-11-07 09:48:20.332871086 +0100
9cfe9a
@@ -6963,13 +6963,8 @@ imapx_parser_thread (gpointer d)
9cfe9a
 
9cfe9a
 	g_clear_error (&local_error);
9cfe9a
 
9cfe9a
-	return NULL;
9cfe9a
-}
9cfe9a
+	g_object_unref (is);
9cfe9a
 
9cfe9a
-static gpointer
9cfe9a
-join_helper (gpointer thread)
9cfe9a
-{
9cfe9a
-	g_thread_join (thread);
9cfe9a
 	return NULL;
9cfe9a
 }
9cfe9a
 
9cfe9a
@@ -7041,14 +7036,8 @@ imapx_server_dispose (GObject *object)
9cfe9a
 	}
9cfe9a
 	QUEUE_UNLOCK (server);
9cfe9a
 
9cfe9a
-	if (server->parser_thread) {
9cfe9a
-		if (server->parser_thread == g_thread_self ()) {
9cfe9a
-			GThread *thread;
9cfe9a
-
9cfe9a
-			thread = g_thread_new (NULL, join_helper, server->parser_thread);
9cfe9a
-			g_thread_unref (thread);
9cfe9a
-		} else
9cfe9a
-			g_thread_join (server->parser_thread);
9cfe9a
+	if (server->parser_thread != NULL) {
9cfe9a
+		g_thread_unref (server->parser_thread);
9cfe9a
 		server->parser_thread = NULL;
9cfe9a
 	}
9cfe9a
 
9cfe9a
@@ -7288,7 +7277,8 @@ camel_imapx_server_connect (CamelIMAPXSe
9cfe9a
 	if (!imapx_reconnect (is, cancellable, error))
9cfe9a
 		return FALSE;
9cfe9a
 
9cfe9a
-	is->parser_thread = g_thread_new (NULL, (GThreadFunc) imapx_parser_thread, is);
9cfe9a
+	is->parser_thread = g_thread_new (
9cfe9a
+		NULL, (GThreadFunc) imapx_parser_thread, g_object_ref (is));
9cfe9a
 
9cfe9a
 	return TRUE;
9cfe9a
 }