]> git.0d.be Git - empathy.git/commitdiff
deal if ag_manager_new_for_service_type() returns NULL
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 5 Oct 2012 11:28:04 +0000 (13:28 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Mon, 8 Oct 2012 08:49:26 +0000 (10:49 +0200)
Looks like it may happen because of Ubuntu's apparmor policy. We can't do much
in this case but best to not crash MC at least.

https://bugzilla.gnome.org/show_bug.cgi?id=685498

ubuntu-online-accounts/mc-plugin/mcp-account-manager-uoa.c

index 0e1705bda002e0d4238ed2902eca823596283886..c46a5f89fb2ff2a64cfd115817d110b0681a4bf8 100644 (file)
@@ -354,6 +354,7 @@ mcp_account_manager_uoa_init (McpAccountManagerUoa *self)
   self->priv->pending_signals = g_queue_new ();
 
   self->priv->manager = ag_manager_new_for_service_type (SERVICE_TYPE);
   self->priv->pending_signals = g_queue_new ();
 
   self->priv->manager = ag_manager_new_for_service_type (SERVICE_TYPE);
+  g_return_if_fail (self->priv->manager != NULL);
 
   g_signal_connect (self->priv->manager, "account-created",
       G_CALLBACK (_account_created_cb), self);
 
   g_signal_connect (self->priv->manager, "account-created",
       G_CALLBACK (_account_created_cb), self);
@@ -428,6 +429,8 @@ account_manager_uoa_list (const McpAccountStorage *storage,
 
   DEBUG (G_STRFUNC);
 
 
   DEBUG (G_STRFUNC);
 
+  g_return_val_if_fail (self->priv->manager != NULL, NULL);
+
   _ensure_loaded (self);
 
   g_hash_table_iter_init (&iter, self->priv->accounts);
   _ensure_loaded (self);
 
   g_hash_table_iter_init (&iter, self->priv->accounts);
@@ -460,6 +463,8 @@ account_manager_uoa_get (const McpAccountStorage *storage,
   AgService *s;
   gboolean handled = FALSE;
 
   AgService *s;
   gboolean handled = FALSE;
 
+  g_return_if_fail (self->priv->manager != NULL);
+
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
     return FALSE;
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
     return FALSE;
@@ -539,6 +544,8 @@ account_manager_uoa_set (const McpAccountStorage *storage,
   AgAccountService *service;
   AgAccount *account;
 
   AgAccountService *service;
   AgAccount *account;
 
+  g_return_if_fail (self->priv->manager != NULL);
+
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
     return FALSE;
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
     return FALSE;
@@ -580,6 +587,8 @@ account_manager_uoa_create (const McpAccountStorage *storage,
   AgAccountService *service;
   GList *l;
 
   AgAccountService *service;
   GList *l;
 
+  g_return_if_fail (self->priv->manager != NULL);
+
   if (!self->priv->ready)
     {
       g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT,
   if (!self->priv->ready)
     {
       g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT,
@@ -626,6 +635,8 @@ account_manager_uoa_delete (const McpAccountStorage *storage,
   AgAccountService *service;
   AgAccount *account;
 
   AgAccountService *service;
   AgAccount *account;
 
+  g_return_if_fail (self->priv->manager != NULL);
+
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
     return FALSE;
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
     return FALSE;
@@ -657,6 +668,8 @@ account_manager_uoa_commit (const McpAccountStorage *storage,
 
   DEBUG (G_STRFUNC);
 
 
   DEBUG (G_STRFUNC);
 
+  g_return_if_fail (self->priv->manager != NULL);
+
   g_hash_table_iter_init (&iter, self->priv->accounts);
   while (g_hash_table_iter_next (&iter, NULL, &value))
     {
   g_hash_table_iter_init (&iter, self->priv->accounts);
   while (g_hash_table_iter_next (&iter, NULL, &value))
     {
@@ -706,6 +719,8 @@ account_manager_uoa_ready (const McpAccountStorage *storage,
   McpAccountManagerUoa *self = (McpAccountManagerUoa *) storage;
   DelayedSignalData *data;
 
   McpAccountManagerUoa *self = (McpAccountManagerUoa *) storage;
   DelayedSignalData *data;
 
+  g_return_if_fail (self->priv->manager != NULL);
+
   if (self->priv->ready)
     return;
 
   if (self->priv->ready)
     return;
 
@@ -747,6 +762,8 @@ account_manager_uoa_get_identifier (const McpAccountStorage *storage,
   AgAccountService *service;
   AgAccount *account;
 
   AgAccountService *service;
   AgAccount *account;
 
+  g_return_if_fail (self->priv->manager != NULL);
+
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
     return;
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
     return;
@@ -766,6 +783,8 @@ account_manager_uoa_get_restrictions (const McpAccountStorage *storage,
   guint restrictions = TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_SERVICE;
   GValue value = G_VALUE_INIT;
 
   guint restrictions = TP_STORAGE_RESTRICTION_FLAG_CANNOT_SET_SERVICE;
   GValue value = G_VALUE_INIT;
 
+  g_return_val_if_fail (self->priv->manager != NULL, 0);
+
   /* If we don't know this account, we cannot do anything */
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)
   /* If we don't know this account, we cannot do anything */
   service = g_hash_table_lookup (self->priv->accounts, account_name);
   if (service == NULL)