}
}
+static void virtual_sync_deinit(struct virtual_sync_context **_ctx)
+{
+ struct virtual_sync_context *ctx = *_ctx;
+ if (ctx == NULL)
+ return;
+ *_ctx = NULL;
+
+ array_free(&ctx->sync_expunges);
+ array_free(&ctx->all_adds);
+ array_free(&ctx->all_mails);
+ i_free(ctx);
+}
+
static int virtual_sync_mail_mailbox_cmp(const struct virtual_sync_mail *m1,
const struct virtual_sync_mail *m2)
{
i_assert(uidmap->virtual_uid > 0);
}
#endif
- array_free(&ctx->all_adds);
- if (array_is_created(&ctx->all_mails))
- array_free(&ctx->all_mails);
return ret;
}
}
mail_index_sync_rollback(&ctx->index_sync_ctx);
}
- i_free(ctx);
+ virtual_sync_deinit(&ctx);
return ret;
}
if (ret <= 0) {
if (ret < 0)
mailbox_set_index_error(&mbox->box);
- i_free(ctx);
+ virtual_sync_deinit(&ctx);
return ret;
}