[Galago-commits] r2664 - in trunk/libgalago: . libgalago

galago-commits at freedesktop.org galago-commits at freedesktop.org
Mon Apr 3 03:06:03 PDT 2006


Author: chipx86
Date: 2006-04-03 03:05:56 -0700 (Mon, 03 Apr 2006)
New Revision: 2664

Modified:
   trunk/libgalago/ChangeLog
   trunk/libgalago/libgalago/galago-account.c
   trunk/libgalago/libgalago/galago-object.c
   trunk/libgalago/libgalago/galago-presence.c
Log:
Protect a bit better from crashes when GalagoAccount's and GalagoPresence's destroy functions are called more than once.


Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog	2006-04-03 08:20:17 UTC (rev 2663)
+++ trunk/libgalago/ChangeLog	2006-04-03 10:05:56 UTC (rev 2664)
@@ -1,3 +1,11 @@
+Mon Apr 03 03:05:07 PDT 2006  Christian Hammond <chipx86 at chipx86.com>
+
+	* libgalago/galago-account.c:
+	* libgalago/galago-object.c:
+	* libgalago/galago-presence.c:
+	  - Protect a bit better from crashes when GalagoAccount's and
+	    GalagoPresence's destroy functions are called more than once.
+
 Mon Apr 03 01:18:29 PDT 2006  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/galago-account.c:

Modified: trunk/libgalago/libgalago/galago-account.c
===================================================================
--- trunk/libgalago/libgalago/galago-account.c	2006-04-03 08:20:17 UTC (rev 2663)
+++ trunk/libgalago/libgalago/galago-account.c	2006-04-03 10:05:56 UTC (rev 2664)
@@ -235,19 +235,19 @@
 
 	g_return_if_fail(account != NULL);
 
-	service = galago_account_get_service(account);
-	person  = galago_account_get_person(account);
+	if (account->priv != NULL)
+	{
+		service = galago_account_get_service(account);
+		person  = galago_account_get_person(account);
 
-	_galago_service_remove_account(service, account);
+		_galago_service_remove_account(service, account);
 
-	if (person != NULL)
-	{
-		_galago_person_remove_account(person, account);
-		account->priv->person = NULL;
-	}
+		if (person != NULL)
+		{
+			_galago_person_remove_account(person, account);
+			account->priv->person = NULL;
+		}
 
-	if (account->priv != NULL)
-	{
 		if (account->priv->presence != NULL)
 			galago_object_destroy(GALAGO_OBJECT(account->priv->presence));
 

Modified: trunk/libgalago/libgalago/galago-object.c
===================================================================
--- trunk/libgalago/libgalago/galago-object.c	2006-04-03 08:20:17 UTC (rev 2663)
+++ trunk/libgalago/libgalago/galago-object.c	2006-04-03 10:05:56 UTC (rev 2664)
@@ -258,7 +258,6 @@
 
 	if (!GALAGO_OBJECT_HAS_FLAG(object, GALAGO_OBJECT_IN_DESTRUCTION))
 		g_object_run_dispose(G_OBJECT(object));
-
 }
 
 const gchar *

Modified: trunk/libgalago/libgalago/galago-presence.c
===================================================================
--- trunk/libgalago/libgalago/galago-presence.c	2006-04-03 08:20:17 UTC (rev 2663)
+++ trunk/libgalago/libgalago/galago-presence.c	2006-04-03 10:05:56 UTC (rev 2664)
@@ -174,19 +174,20 @@
 galago_presence_destroy(GalagoObject *object)
 {
 	GalagoPresence *presence = GALAGO_PRESENCE(object);
-	GalagoAccount *account;
 
-	account = galago_presence_get_account(presence);
-
-	if (account != NULL && GALAGO_OBJECT_IS_LOCAL(presence) &&
-		galago_account_get_presence(account, FALSE) == presence)
+	if (presence->priv != NULL)
 	{
-		_galago_account_set_presence(account, NULL);
-		_galago_dbus_account_destroy_presence(account, presence);
-	}
+		GalagoAccount *account;
 
-	if (presence->priv != NULL)
-	{
+		account = galago_presence_get_account(presence);
+
+		if (account != NULL && GALAGO_OBJECT_IS_LOCAL(presence) &&
+			galago_account_get_presence(account, FALSE) == presence)
+		{
+			_galago_account_set_presence(account, NULL);
+			_galago_dbus_account_destroy_presence(account, presence);
+		}
+
 		if (presence->priv->statuses != NULL)
 		{
 			g_list_foreach(presence->priv->statuses,



More information about the galago-commits mailing list