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