summaryrefslogtreecommitdiff
path: root/mail/decode.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/decode.c')
-rw-r--r--mail/decode.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/mail/decode.c b/mail/decode.c
index 869fe2f3b..647f8cff3 100644
--- a/mail/decode.c
+++ b/mail/decode.c
@@ -172,7 +172,6 @@ mime_descend (struct mime_descend_closure *closure,
mime_descend_fn fun, void *data)
{
int status = 0;
- size_t nparts = 0;
mu_header_t hdr = NULL;
char *type;
char *encoding;
@@ -195,23 +194,31 @@ mime_descend (struct mime_descend_closure *closure,
if (ismime)
{
unsigned int j;
-
- mu_message_get_num_parts (closure->message, &nparts);
-
- for (j = 1; j <= nparts; j++)
+ size_t nparts;
+
+ status = mu_message_get_num_parts (closure->message, &nparts);
+ if (status)
{
- mu_message_t message = NULL;
-
- if (mu_message_get_part (closure->message, j, &message) == 0)
+ mu_diag_funcall (MU_DIAG_ERR, "mu_message_get_num_parts", NULL,
+ status);
+ }
+ else
+ {
+ for (j = 1; j <= nparts; j++)
{
- msgset_t *set = msgset_expand (msgset_dup (closure->msgset),
- msgset_make_1 (j));
- subclosure.msgset = set;
- subclosure.message = message;
- status = mime_descend (&subclosure, fun, data);
- msgset_free (set);
- if (status)
- break;
+ mu_message_t message = NULL;
+
+ if (mu_message_get_part (closure->message, j, &message) == 0)
+ {
+ msgset_t *set = msgset_expand (msgset_dup (closure->msgset),
+ msgset_make_1 (j));
+ subclosure.msgset = set;
+ subclosure.message = message;
+ status = mime_descend (&subclosure, fun, data);
+ msgset_free (set);
+ if (status)
+ break;
+ }
}
}
}

Return to:

Send suggestions and report system problems to the System administrator.