aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-mt.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/mail-mt.c')
-rw-r--r--mail/mail-mt.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/mail/mail-mt.c b/mail/mail-mt.c
index 5ef8a0147e..724498c359 100644
--- a/mail/mail-mt.c
+++ b/mail/mail-mt.c
@@ -153,7 +153,8 @@ mail_msg_ref (gpointer msg)
g_return_val_if_fail (mail_msg != NULL, msg);
g_return_val_if_fail (mail_msg->ref_count > 0, msg);
- g_atomic_int_add (&mail_msg->ref_count, 1);
+ g_atomic_int_inc (&mail_msg->ref_count);
+
return msg;
}
@@ -165,31 +166,31 @@ mail_msg_unref (gpointer msg)
g_return_if_fail (mail_msg != NULL);
g_return_if_fail (mail_msg->ref_count > 0);
- if (g_atomic_int_add (&mail_msg->ref_count, -1) > 1)
- return;
+ if (g_atomic_int_dec_and_test (&mail_msg->ref_count)) {
#ifdef MALLOC_CHECK
- checkmem (mail_msg);
- checkmem (mail_msg->cancel);
- checkmem (mail_msg->priv);
+ checkmem (mail_msg);
+ checkmem (mail_msg->cancel);
+ checkmem (mail_msg->priv);
#endif
- d(printf("Free message %p\n", msg));
+ d(printf("Free message %p\n", msg));
- if (mail_msg->info->free)
- mail_msg->info->free (mail_msg);
+ if (mail_msg->info->free)
+ mail_msg->info->free (mail_msg);
- g_mutex_lock (mail_msg_lock);
+ g_mutex_lock (mail_msg_lock);
- g_hash_table_remove (
- mail_msg_active_table,
- GINT_TO_POINTER (mail_msg->seq));
- g_cond_broadcast (mail_msg_cond);
+ g_hash_table_remove (
+ mail_msg_active_table,
+ GINT_TO_POINTER (mail_msg->seq));
+ g_cond_broadcast (mail_msg_cond);
- g_mutex_unlock (mail_msg_lock);
+ g_mutex_unlock (mail_msg_lock);
- /* Destroy the message from an idle callback
- * so we know we're in the main loop thread. */
- g_idle_add ((GSourceFunc) mail_msg_free, mail_msg);
+ /* Destroy the message from an idle callback
+ * so we know we're in the main loop thread. */
+ g_idle_add ((GSourceFunc) mail_msg_free, mail_msg);
+ }
}
void