From: Aki Tuomi Date: Wed, 22 Mar 2017 08:32:58 +0000 (+0200) Subject: lib-dict: Use dict-fail iterator and transaction when missing from dict driver X-Git-Tag: 2.2.29.rc1~109 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a0053e52a3d62322f8b630258f4ec7179c1e4e7e;p=thirdparty%2Fdovecot%2Fcore.git lib-dict: Use dict-fail iterator and transaction when missing from dict driver --- diff --git a/src/lib-dict/dict.c b/src/lib-dict/dict.c index be3eaf4db9..3f5f641c20 100644 --- a/src/lib-dict/dict.c +++ b/src/lib-dict/dict.c @@ -7,7 +7,6 @@ #include "dict-private.h" static ARRAY(struct dict *) dict_drivers; -static struct dict_iterate_context dict_iter_unsupported; static struct dict *dict_driver_lookup(const char *name) { @@ -187,8 +186,6 @@ dict_iterate_init_multiple(struct dict *dict, const char *const *paths, bool dict_iterate(struct dict_iterate_context *ctx, const char **key_r, const char **value_r) { - if (ctx == &dict_iter_unsupported) - return FALSE; if (ctx->max_rows > 0 && ctx->row_count >= ctx->max_rows) { /* row count was limited */ ctx->has_more = FALSE; @@ -227,12 +224,13 @@ int dict_iterate_deinit(struct dict_iterate_context **_ctx) ctx->dict->iter_count--; *_ctx = NULL; - return ctx == &dict_iter_unsupported ? -1 : - ctx->dict->v.iterate_deinit(ctx); + return ctx->dict->v.iterate_deinit(ctx); } struct dict_transaction_context *dict_transaction_begin(struct dict *dict) { + if (dict->v.transaction_init == NULL) + return &dict_transaction_unsupported; return dict->v.transaction_init(dict); }