From b9e567b56ab2dfb9ce10100407524b872d44b476 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@dovecot.fi> Date: Thu, 28 Apr 2016 23:02:38 +0200 Subject: [PATCH] lib-sieve: Handle extension overriding itself properly. --- src/lib-sieve/sieve-extensions.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c index 69bb4ddd1..3b4127df7 100644 --- a/src/lib-sieve/sieve-extensions.c +++ b/src/lib-sieve/sieve-extensions.c @@ -504,13 +504,15 @@ void sieve_extension_override struct sieve_extension * const *mod_ext; struct sieve_extension *old_ext; + old_ext = sieve_extension_lookup(svinst, name); + if (old_ext == ext) + return; + i_assert( old_ext == NULL || !old_ext->overridden ); + i_assert( ext->id >= 0 && ext->id < (int) array_count(&ext_reg->extensions) ); mod_ext = array_idx(&ext_reg->extensions, ext->id); - old_ext = sieve_extension_lookup(svinst, name); - i_assert( old_ext == NULL || !old_ext->overridden ); - sieve_extension_insert(svinst, name, *mod_ext); if ( old_ext != NULL ) old_ext->overridden = TRUE; -- GitLab