From 45bc3d9058e7f671d55e39b1fd2ce41aa9958eca Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Sat, 9 Jan 2016 20:58:56 +0100 Subject: [PATCH] lib-sieve: imap4flags extension: Similar problem as previous commit, but relating to retrieval rather than manipulation. --- .../plugins/imap4flags/ext-imap4flags-common.c | 7 +++++-- .../plugins/imap4flags/sieve-ext-imap4flags.h | 1 + src/lib-sieve/plugins/imap4flags/tst-hasflag.c | 12 ++++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c index f5543574a..67d7fb5e0 100644 --- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c +++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c @@ -700,11 +700,14 @@ static void ext_imap4flags_stringlist_reset struct sieve_stringlist *sieve_ext_imap4flags_get_flags (const struct sieve_runtime_env *renv, + const struct sieve_extension *flg_ext, struct sieve_stringlist *flags_list) { - if ( flags_list == NULL ) + if ( flags_list == NULL ) { + i_assert( sieve_extension_is(flg_ext, imap4flags_extension) ); return ext_imap4flags_stringlist_create_single - (renv, _get_flags_string(renv->oprtn->ext, renv->result), FALSE); + (renv, _get_flags_string(flg_ext, renv->result), FALSE); + } return ext_imap4flags_stringlist_create(renv, flags_list, TRUE); } diff --git a/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h b/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h index 42bdd5e7a..fdc4dd6a2 100644 --- a/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h +++ b/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h @@ -57,6 +57,7 @@ int sieve_ext_imap4flags_remove_flags struct sieve_stringlist *sieve_ext_imap4flags_get_flags (const struct sieve_runtime_env *renv, + const struct sieve_extension *flg_ext, struct sieve_stringlist *flags_list); #endif diff --git a/src/lib-sieve/plugins/imap4flags/tst-hasflag.c b/src/lib-sieve/plugins/imap4flags/tst-hasflag.c index 8b022c67b..8426bd064 100644 --- a/src/lib-sieve/plugins/imap4flags/tst-hasflag.c +++ b/src/lib-sieve/plugins/imap4flags/tst-hasflag.c @@ -175,6 +175,7 @@ static bool tst_hasflag_operation_dump static int tst_hasflag_operation_execute (const struct sieve_runtime_env *renv, sieve_size_t *address) { + const struct sieve_operation *op = renv->oprtn; int opt_code = 0; struct sieve_comparator cmp = SIEVE_COMPARATOR_DEFAULT(i_ascii_casemap_comparator); @@ -224,13 +225,16 @@ static int tst_hasflag_operation_execute sieve_runtime_trace(renv, SIEVE_TRLVL_TESTS, "hasflag test"); - value_list = sieve_ext_imap4flags_get_flags(renv, variables_list); + value_list = sieve_ext_imap4flags_get_flags + (renv, op->ext, variables_list); if ( sieve_match_type_is(&mcht, is_match_type) || - sieve_match_type_is(&mcht, contains_match_type) ) - key_list = sieve_ext_imap4flags_get_flags(renv, flag_list); - else + sieve_match_type_is(&mcht, contains_match_type) ) { + key_list = sieve_ext_imap4flags_get_flags + (renv, op->ext, flag_list); + } else { key_list = flag_list; + } /* Perform match */ if ( (match=sieve_match(renv, &mcht, &cmp, value_list, key_list, &ret)) < 0 ) -- GitLab