From: Timo Sirainen Date: Wed, 2 Sep 2015 14:28:41 +0000 (+0300) Subject: dict-sql: Code cleanup - added sql_dict_transaction_has_nonexistent() X-Git-Tag: 2.2.19.rc1~131 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=32afa834487ff44e3891a1934076d14b096a039c;p=thirdparty%2Fdovecot%2Fcore.git dict-sql: Code cleanup - added sql_dict_transaction_has_nonexistent() --- diff --git a/src/lib-dict/dict-sql.c b/src/lib-dict/dict-sql.c index 8c6bfc8af3..1a0359aa7d 100644 --- a/src/lib-dict/dict-sql.c +++ b/src/lib-dict/dict-sql.c @@ -537,6 +537,19 @@ static void sql_dict_transaction_free(struct sql_dict_transaction_context *ctx) i_free(ctx); } +static bool +sql_dict_transaction_has_nonexistent(struct sql_dict_transaction_context *ctx) +{ + struct sql_dict_inc_row *inc_row; + + for (inc_row = ctx->inc_row; inc_row != NULL; inc_row = inc_row->prev) { + i_assert(inc_row->rows != UINT_MAX); + if (inc_row->rows == 0) + return TRUE; + } + return FALSE; +} + static int sql_dict_transaction_commit(struct dict_transaction_context *_ctx, bool async ATTR_UNUSED, @@ -562,14 +575,8 @@ sql_dict_transaction_commit(struct dict_transaction_context *_ctx, i_error("sql dict: commit failed: %s", error); ret = -1; } else { - while (ctx->inc_row != NULL) { - i_assert(ctx->inc_row->rows != UINT_MAX); - if (ctx->inc_row->rows == 0) { - ret = 0; - break; - } - ctx->inc_row = ctx->inc_row->prev; - } + if (sql_dict_transaction_has_nonexistent(ctx)) + ret = 0; } } sql_dict_transaction_free(ctx);