From fb6734cf234cb513864c27a1936958a26a45aa6c Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Mon, 16 Jan 2017 09:37:05 +0200 Subject: [PATCH] dict-sql: Fix flushing Remove flushing from set, and add it to unset. Fixes signal 11 crash caused by infinite recursion. --- src/lib-dict/dict-sql.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/lib-dict/dict-sql.c b/src/lib-dict/dict-sql.c index 4ea53e648c..f56992c004 100644 --- a/src/lib-dict/dict-sql.c +++ b/src/lib-dict/dict-sql.c @@ -1064,11 +1064,6 @@ static void sql_dict_set_real(struct dict_transaction_context *_ctx, return; } - if (ctx->prev_inc_map != NULL) - sql_dict_prev_inc_flush(ctx); - if (ctx->prev_set_map != NULL) - sql_dict_prev_set_flush(ctx); - field.map = map; field.value = value; @@ -1103,6 +1098,8 @@ static void sql_dict_unset(struct dict_transaction_context *_ctx, if (ctx->prev_inc_map != NULL) sql_dict_prev_inc_flush(ctx); + if (ctx->prev_set_map != NULL) + sql_dict_prev_set_flush(ctx); map = sql_dict_find_map(dict, key, &values); if (map == NULL) {