diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c index 8b355a9639574eb98e68e098c1c900aa0aa5af09..008bfa647d6336f8d2702376b019adefd79e7c99 100644 --- a/src/lib-sieve/sieve-script.c +++ b/src/lib-sieve/sieve-script.c @@ -863,15 +863,15 @@ void sieve_script_sequence_init(struct sieve_script_sequence *sseq, sieve_storage_ref(storage); } -struct sieve_script_sequence * -sieve_script_sequence_create(struct sieve_instance *svinst, - const char *location, - enum sieve_error *error_code_r) +int sieve_script_sequence_create(struct sieve_instance *svinst, + const char *location, + struct sieve_script_sequence **sseq_r, + enum sieve_error *error_code_r) { struct sieve_storage *storage; - struct sieve_script_sequence *sseq; enum sieve_error error_code; + *sseq_r = NULL; if (error_code_r != NULL) *error_code_r = SIEVE_ERROR_NONE; else @@ -879,12 +879,12 @@ sieve_script_sequence_create(struct sieve_instance *svinst, if (sieve_storage_create(svinst, location, 0, &storage, error_code_r) < 0) - return NULL; + return -1; - sseq = sieve_storage_get_script_sequence(storage, error_code_r); + *sseq_r = sieve_storage_get_script_sequence(storage, error_code_r); sieve_storage_unref(&storage); - return sseq; + return 0; } struct sieve_script * diff --git a/src/lib-sieve/sieve-script.h b/src/lib-sieve/sieve-script.h index 952ea1bdc5a953c219ee823d98a921c4363edd3e..24d9759ea95231a400d06a8dcbf1928a7e99beb9 100644 --- a/src/lib-sieve/sieve-script.h +++ b/src/lib-sieve/sieve-script.h @@ -152,10 +152,10 @@ const char *sieve_script_get_last_error_lcase(struct sieve_script *script); struct sieve_script_sequence; -struct sieve_script_sequence * -sieve_script_sequence_create(struct sieve_instance *svinst, - const char *location, - enum sieve_error *error_code_r); +int sieve_script_sequence_create(struct sieve_instance *svinst, + const char *location, + struct sieve_script_sequence **sseq_r, + enum sieve_error *error_code_r); struct sieve_script * sieve_script_sequence_next(struct sieve_script_sequence *sseq, enum sieve_error *error_code_r); diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c index 54736a5b82881056312ed4068badb14a44d52980..e369468bcf86880639a41fcffa78e1b443a757e0 100644 --- a/src/plugins/lda-sieve/lda-sieve-plugin.c +++ b/src/plugins/lda-sieve/lda-sieve-plugin.c @@ -289,8 +289,8 @@ lda_sieve_multiscript_get_scripts(struct sieve_instance *svinst, bool finished = FALSE; int ret = 1; - sseq = sieve_script_sequence_create(svinst, location, error_code_r); - if (sseq == NULL) + if (sieve_script_sequence_create(svinst, location, + &sseq, error_code_r) < 0) return (*error_code_r == SIEVE_ERROR_NOT_FOUND ? 0 : -1); while (ret > 0 && !finished) {