diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-05-15 04:44:44 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-05-20 01:07:20 +0800 |
commit | f6f11a1da2dfa2c7616cd18b36a44fefd66f0c75 (patch) | |
tree | 94091b064fd126c1e23a2ed019561b9842111a78 /em-format/e-mail-part.c | |
parent | 7d3ce25e9f3575560e331529edf55661eab92d2f (diff) | |
download | gsoc2013-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.c | 25 |
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); } } |