From ae679d44f00e8685d685ce5c43f3d737d9f300b2 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Tue, 27 Dec 2011 22:21:34 +0100
Subject: [PATCH] lib-sieve: fixed bug in message snapshots. Message
 substitutions would not always cause a proper snapshot.

---
 src/lib-sieve/sieve-message.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index 52bed3e8d..2ceb0cddd 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -78,6 +78,7 @@ struct sieve_message_context {
 	ARRAY_DEFINE(ext_contexts, void *);
 
 	unsigned int edit_snapshot:1;
+	unsigned int substitute_snapshot:1;
 };
 
 /*
@@ -376,7 +377,7 @@ int sieve_message_substitute
 		return -1;
 	}
 
-	if ( msgctx->edit_snapshot ) {
+	if ( msgctx->substitute_snapshot ) {
 		version = sieve_message_version_new(msgctx);
 	} else {
 		version = sieve_message_version_get(msgctx);	
@@ -392,6 +393,7 @@ int sieve_message_substitute
 
 	sieve_message_context_flush(msgctx);
 
+	msgctx->substitute_snapshot = FALSE;
 	msgctx->edit_snapshot = FALSE;
 
 	return 1;
@@ -436,6 +438,7 @@ void sieve_message_snapshot
 (struct sieve_message_context *msgctx)
 {
 	msgctx->edit_snapshot = TRUE;
+	msgctx->substitute_snapshot = TRUE;
 }
 
 /*
-- 
GitLab