aboutsummaryrefslogtreecommitdiffstats
path: root/em-format/e-mail-part.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-05-15 04:44:44 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-05-20 01:07:20 +0800
commitf6f11a1da2dfa2c7616cd18b36a44fefd66f0c75 (patch)
tree94091b064fd126c1e23a2ed019561b9842111a78 /em-format/e-mail-part.c
parent7d3ce25e9f3575560e331529edf55661eab92d2f (diff)
downloadgsoc2013-evolution-f6f11a1da2dfa2c7616cd18b36a44fefd66f0c75.tar
gsoc2013-evolution-f6f11a1da2dfa2c7616cd18b36a44fefd66f0c75.tar.gz
gsoc2013-evolution-f6f11a1da2dfa2c7616cd18b36a44fefd66f0c75.tar.bz2
gsoc2013-evolution-f6f11a1da2dfa2c7616cd18b36a44fefd66f0c75.tar.lz
gsoc2013-evolution-f6f11a1da2dfa2c7616cd18b36a44fefd66f0c75.tar.xz
gsoc2013-evolution-f6f11a1da2dfa2c7616cd18b36a44fefd66f0c75.tar.zst
gsoc2013-evolution-f6f11a1da2dfa2c7616cd18b36a44fefd66f0c75.zip
EMailPart: Store validity pairs in a GQueue.
Diffstat (limited to 'em-format/e-mail-part.c')
-rw-r--r--em-format/e-mail-part.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/em-format/e-mail-part.c b/em-format/e-mail-part.c
index 657b677cb9..9e280e07bf 100644
--- a/em-format/e-mail-part.c
+++ b/em-format/e-mail-part.c
@@ -53,6 +53,8 @@ mail_part_validity_pair_free (gpointer ptr)
static void
mail_part_free (EMailPart *part)
{
+ EMailPartValidityPair *pair;
+
if (!part)
return;
@@ -71,10 +73,8 @@ mail_part_free (EMailPart *part)
part->mime_type = NULL;
}
- if (part->validities) {
- g_slist_free_full (part->validities, mail_part_validity_pair_free);
- part->validities = NULL;
- }
+ while ((pair = g_queue_pop_head (&part->validities)) != NULL)
+ mail_part_validity_pair_free (pair);
if (part->priv->free_func) {
part->priv->free_func (part);
@@ -180,12 +180,17 @@ static EMailPartValidityPair *
mail_part_find_validity_pair (EMailPart *part,
guint32 validity_type)
{
- GSList *lst;
+ GList *head, *link;
+
+ head = g_queue_peek_head_link (&part->validities);
+
+ for (link = head; link != NULL; link = g_list_next (link)) {
+ EMailPartValidityPair *pair = link->data;
- for (lst = part->validities; lst; lst = lst->next) {
- EMailPartValidityPair *pair = lst->data;
+ if (pair == NULL)
+ continue;
- if (pair && (pair->validity_type & validity_type) == validity_type)
+ if ((pair->validity_type & validity_type) == validity_type)
return pair;
}
@@ -213,7 +218,7 @@ e_mail_part_update_validity (EMailPart *part,
g_return_if_fail (part != NULL);
pair = mail_part_find_validity_pair (part, validity_type & (E_MAIL_PART_VALIDITY_PGP | E_MAIL_PART_VALIDITY_SMIME));
- if (pair) {
+ if (pair != NULL) {
pair->validity_type |= validity_type;
camel_cipher_validity_envelope (pair->validity, validity);
} else {
@@ -221,7 +226,7 @@ e_mail_part_update_validity (EMailPart *part,
pair->validity_type = validity_type;
pair->validity = camel_cipher_validity_clone (validity);
- part->validities = g_slist_append (part->validities, pair);
+ g_queue_push_tail (&part->validities, pair);
}
}