]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: message-parser - Optimize updating children_count
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 23 Apr 2020 08:36:48 +0000 (11:36 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 27 May 2020 05:28:17 +0000 (08:28 +0300)
src/lib-mail/message-parser.c

index 0edd4d267c2c30bbbb410f935aa6e19d8bc18e16..f19759c2579173c88427d81b629ce05d60588f7d 100644 (file)
@@ -126,7 +126,7 @@ static void
 message_part_append(struct message_parser_ctx *ctx)
 {
        struct message_part *parent = ctx->part;
-       struct message_part *p, *part, **list;
+       struct message_part *part, **list;
 
        i_assert(parent != NULL);
        i_assert((parent->flags & (MESSAGE_PART_FLAG_MULTIPART |
@@ -134,8 +134,6 @@ message_part_append(struct message_parser_ctx *ctx)
 
        part = p_new(ctx->part_pool, struct message_part, 1);
        part->parent = parent;
-       for (p = parent; p != NULL; p = p->parent)
-               p->children_count++;
 
        /* set child position */
        part->physical_pos =
@@ -155,6 +153,7 @@ static void message_part_finish(struct message_parser_ctx *ctx)
 {
        message_size_add(&ctx->part->parent->body_size, &ctx->part->body_size);
        message_size_add(&ctx->part->parent->body_size, &ctx->part->header_size);
+       ctx->part->parent->children_count += 1 + ctx->part->children_count;
        ctx->part = ctx->part->parent;
 }