]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: list: mailbox-list-iter - Add list local variable to mailbox_list_iter_n...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Tue, 26 Aug 2025 22:38:34 +0000 (00:38 +0200)
committerStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 26 Jan 2026 01:58:58 +0000 (02:58 +0100)
src/lib-storage/list/mailbox-list-iter.c

index b7a7e0be8bf22be0a9bef375c9179ccaccf7536b..6cd62d55f52455b7775a7576460b9d8056e79e4d 100644 (file)
@@ -1222,23 +1222,24 @@ mailbox_list_iter_next_call(struct mailbox_list_iterate_context *ctx)
                if ((info = mailbox_list_finish_subscriptions(ctx)) == NULL)
                        return NULL;
 
-       ctx->list->ns->flags |= NAMESPACE_FLAG_USABLE;
+       /* NOTE: ctx->list may be fake - don't use it directly */
+       struct mailbox_list *list = info->ns->list;
+
+       list->ns->flags |= NAMESPACE_FLAG_USABLE;
        if ((ctx->flags & MAILBOX_LIST_ITER_RETURN_SPECIALUSE) != 0) {
-               /* NOTE: ctx->list is fake - don't use it directly */
                const char *error;
 
-               ret = mailbox_name_try_get_settings(info->ns->list, info->vname,
+               ret = mailbox_name_try_get_settings(list, info->vname,
                                                    &set, &error);
                if (ret == 0) {
                        struct event *event = mail_storage_mailbox_create_event(
-                               info->ns->list->event, info->ns->list,
-                               info->vname);
+                               list->event, list, info->vname);
                        ret = settings_get(event, &mailbox_setting_parser_info, 0,
                                           &set, &error);
                        event_unref(&event);
                }
                if (ret < 0) {
-                       mailbox_list_set_critical(info->ns->list, "%s", error);
+                       mailbox_list_set_critical(list, "%s", error);
                        ctx->failed = TRUE;
                        return NULL;
                }