[evolution-patches] 58642, eds abort on client exit




fwiw eds still has clients around even though they've all left.  this fixes the abort anyway.

--
Michael Zucchi <notzed ximian com>
"born to die, live to work, it's all downhill from here"
Novell's Evolution and Free Software Developer
Index: calendar/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
retrieving revision 1.302
diff -u -3 -r1.302 ChangeLog
--- calendar/ChangeLog	30 Jul 2004 12:30:43 -0000	1.302
+++ calendar/ChangeLog	2 Aug 2004 05:02:27 -0000
@@ -1,3 +1,12 @@
+2004-08-02  Not Zed  <NotZed Ximian com>
+
+	** See bug #58642.
+
+	* libedata-cal/e-data-cal-factory.c (backend_last_client_gone_cb):
+	the table key includes the kidn for some reason.
+	(impl_CalFactory_getCal): store the icalkind in the uri, not the
+	calobjtype.  Fix a memory leak.
+
 2004-07-30  Harish Krishnaswamy  <kharish novell com>
 	
 	Fixes #59335
Index: calendar/libedata-cal/e-data-cal-factory.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/libedata-cal/e-data-cal-factory.c,v
retrieving revision 1.8
diff -u -3 -r1.8 e-data-cal-factory.c
--- calendar/libedata-cal/e-data-cal-factory.c	28 May 2004 10:14:24 -0000	1.8
+++ calendar/libedata-cal/e-data-cal-factory.c	2 Aug 2004 05:02:27 -0000
@@ -58,6 +58,7 @@
 static guint signals[LAST_SIGNAL];
 
 /* Opening calendars */
+
 static icalcomponent_kind
 calobjtype_to_icalkind (const GNOME_Evolution_Calendar_CalObjType type)
 {
@@ -122,6 +123,7 @@
 	EDataCalFactoryPrivate *priv;
 	ECalBackend *ret_backend;
 	const char *uristr;
+	char *uri;
 
 	fprintf (stderr, "backend_last_client_gone_cb() called!\n");
 
@@ -132,18 +134,19 @@
 
 	uristr = e_cal_backend_get_uri (backend);
 	g_assert (uristr != NULL);
+	uri = g_strdup_printf("%s:%d", uristr, (int)e_cal_backend_get_kind(backend));
 
-	ret_backend = lookup_backend (factory, uristr);
+	ret_backend = lookup_backend (factory, uri);
 	g_assert (ret_backend != NULL);
 	g_assert (ret_backend == backend);
 
-	g_hash_table_remove (priv->backends, uristr);
+	g_hash_table_remove (priv->backends, uri);
+	g_free(uri);
 
 	g_signal_handlers_disconnect_matched (backend, G_SIGNAL_MATCH_DATA,
 					      0, 0, NULL, NULL, data);
 
 	/* Notify upstream if there are no more backends */
-
 	if (g_hash_table_size (priv->backends) == 0)
 		g_signal_emit (G_OBJECT (factory), signals[LAST_CALENDAR_GONE], 0);
 }
@@ -197,7 +200,9 @@
 
 		return CORBA_OBJECT_NIL;
 	}
-	uri_type_string = g_strdup_printf ("%s:%d", e_uri_to_string (uri, FALSE), type);	
+	str_uri = e_uri_to_string(uri, FALSE);
+	uri_type_string = g_strdup_printf ("%s:%d", str_uri, (int)calobjtype_to_icalkind (type));
+	g_free(str_uri);
 
 	/* Find the associated backend type (if any) */
 	backend_type = get_backend_type (priv->methods, uri->protocol, calobjtype_to_icalkind (type));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]