]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Fix copying vsize record when copying mails
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 22 Oct 2019 16:58:23 +0000 (19:58 +0300)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 22 Oct 2019 16:58:23 +0000 (19:58 +0300)
Broken by 153ab952f77ed25b71fa4fa9774ff3e3a776b91c

src/lib-storage/index/index-storage.c

index 8281341fcdde37d26f07c3007d9efd3e5c6676e5..49ff5557191745dc34017b579ed9d55c4ddc11f9 100644 (file)
@@ -1015,18 +1015,19 @@ static void
 index_copy_vsize_extension(struct mail_save_context *ctx,
                           struct mail *src_mail, uint32_t dest_seq)
 {
-       struct index_mail *src_imail = INDEX_MAIL(src_mail);
        unsigned int idx;
+       const uint32_t *vsizep;
        bool expunged ATTR_UNUSED;
 
-       (void)index_mail_get_vsize_extension(src_mail);
-       if (src_imail->data.virtual_size == (uoff_t)-1)
+       vsizep = index_mail_get_vsize_extension(src_mail);
+       if (vsizep == NULL || *vsizep == 0)
                return;
+       uint32_t vsize = *vsizep;
 
        if (mail_index_map_get_ext_idx(ctx->transaction->view->map,
                                       ctx->transaction->box->mail_vsize_ext_id,
                                       &idx) &&
-           src_imail->data.virtual_size < (uint32_t)-1) {
+           vsize < (uint32_t)-1) {
                uint32_t vsize = src_imail->data.virtual_size+1;
                mail_index_update_ext(ctx->transaction->itrans, dest_seq,
                                      ctx->transaction->box->mail_vsize_ext_id,