dovecot-2.2-pigeonhole: lib-sieve: file storage: Fixed assert fa...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Tue Aug 5 01:56:03 UTC 2014


details:   http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/860c4e547490
changeset: 1906:860c4e547490
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Tue Aug 05 03:55:56 2014 +0200
description:
lib-sieve: file storage: Fixed assert failure in script sequence code.
Single script was only initialized and not actually opened.

diffstat:

 src/lib-sieve/storage/file/sieve-file-script-sequence.c |   2 +-
 src/lib-sieve/storage/file/sieve-file-script.c          |  19 +++++++++++++++++
 src/lib-sieve/storage/file/sieve-file-storage.h         |   2 +
 3 files changed, 22 insertions(+), 1 deletions(-)

diffs (53 lines):

diff -r 35ff96d4c61b -r 860c4e547490 src/lib-sieve/storage/file/sieve-file-script-sequence.c
--- a/src/lib-sieve/storage/file/sieve-file-script-sequence.c	Tue Aug 05 03:47:36 2014 +0200
+++ b/src/lib-sieve/storage/file/sieve-file-script-sequence.c	Tue Aug 05 03:55:56 2014 +0200
@@ -210,7 +210,7 @@
 	fscript = NULL;
 	if ( fseq->storage_is_file ) {
 		if ( fseq->index++ < 1 )
-			fscript = sieve_file_script_init_from_name(fstorage, NULL);
+			fscript = sieve_file_script_open_from_name(fstorage, NULL);
 
 	} else {
 		files = array_get(&fseq->script_files, &count);
diff -r 35ff96d4c61b -r 860c4e547490 src/lib-sieve/storage/file/sieve-file-script.c
--- a/src/lib-sieve/storage/file/sieve-file-script.c	Tue Aug 05 03:47:36 2014 +0200
+++ b/src/lib-sieve/storage/file/sieve-file-script.c	Tue Aug 05 03:55:56 2014 +0200
@@ -161,6 +161,25 @@
 	return fscript;
 }
 
+struct sieve_file_script *sieve_file_script_open_from_name
+(struct sieve_file_storage *fstorage, const char *name)
+{
+	struct sieve_file_script *fscript;
+	enum sieve_error error;
+
+	fscript = sieve_file_script_init_from_name(fstorage, name);
+	if ( fscript == NULL )
+		return NULL;
+
+	if ( sieve_script_open(&fscript->script, &error) < 0 ) {
+		struct sieve_script *script = &fscript->script;
+		sieve_script_unref(&script);
+		return NULL;
+	}
+
+	return fscript;
+}
+
 struct sieve_file_script *sieve_file_script_init_from_path
 (struct sieve_file_storage *fstorage, const char *path,
 	const char *scriptname, enum sieve_error *error_r)
diff -r 35ff96d4c61b -r 860c4e547490 src/lib-sieve/storage/file/sieve-file-storage.h
--- a/src/lib-sieve/storage/file/sieve-file-storage.h	Tue Aug 05 03:47:36 2014 +0200
+++ b/src/lib-sieve/storage/file/sieve-file-storage.h	Tue Aug 05 03:55:56 2014 +0200
@@ -145,6 +145,8 @@
 		const char *scriptname);
 struct sieve_file_script *sieve_file_script_init_from_name
 	(struct sieve_file_storage *fstorage, const char *name);
+struct sieve_file_script *sieve_file_script_open_from_name
+	(struct sieve_file_storage *fstorage, const char *name);
 
 struct sieve_file_script *sieve_file_script_init_from_path
 	(struct sieve_file_storage *fstorage, const char *path,


More information about the dovecot-cvs mailing list