diff --git a/src/lib-sieve/plugins/include/ext-include-common.c b/src/lib-sieve/plugins/include/ext-include-common.c index 7249ad73da3f934f0972fa4160e7bd9c7ebc526c..114a4f6256100682c275b0975ee3890116c62098 100644 --- a/src/lib-sieve/plugins/include/ext-include-common.c +++ b/src/lib-sieve/plugins/include/ext-include-common.c @@ -119,10 +119,8 @@ void ext_include_unload(const struct sieve_extension *ext) struct ext_include_context *ctx = (struct ext_include_context *)ext->context; - if (ctx->global_storage != NULL) - sieve_storage_unref(&ctx->global_storage); - if (ctx->personal_storage != NULL) - sieve_storage_unref(&ctx->personal_storage); + sieve_storage_unref(&ctx->global_storage); + sieve_storage_unref(&ctx->personal_storage); i_free(ctx->global_location); i_free(ctx); diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c index 52eceb44affa136607cf312168a714a77229f7a4..3a25bd3e2b58f588cb89cf4bd1448298ef0827e2 100644 --- a/src/lib-sieve/sieve-storage.c +++ b/src/lib-sieve/sieve-storage.c @@ -340,7 +340,6 @@ sieve_storage_init(struct sieve_instance *svinst, &location, &options) < 0) { *error_r = SIEVE_ERROR_TEMP_FAILURE; sieve_storage_unref(&storage); - storage = NULL; } else { storage->location = p_strdup(storage->pool, location); @@ -348,10 +347,8 @@ sieve_storage_init(struct sieve_instance *svinst, storage->location); if (storage_class->v.init(storage, options, - error_r) < 0) { + error_r) < 0) sieve_storage_unref(&storage); - storage = NULL; - } } } T_END; @@ -574,8 +571,11 @@ void sieve_storage_unref(struct sieve_storage **_storage) { struct sieve_storage *storage = *_storage; - i_assert(storage->refcount > 0); + if (storage == NULL) + return; + *_storage = NULL; + i_assert(storage->refcount > 0); if (--storage->refcount != 0) return; @@ -592,7 +592,6 @@ void sieve_storage_unref(struct sieve_storage **_storage) i_free(storage->error); event_unref(&storage->event); pool_unref(&storage->pool); - *_storage = NULL; } int sieve_storage_setup_bindir(struct sieve_storage *storage, mode_t mode) diff --git a/src/lib-sieve/storage/file/sieve-file-storage.c b/src/lib-sieve/storage/file/sieve-file-storage.c index 3f470c10cce369f82687d972d77164f71f8df79a..837a53e1a35b7b34880c0d7ea2fbf27edc1f10d3 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage.c +++ b/src/lib-sieve/storage/file/sieve-file-storage.c @@ -708,10 +708,8 @@ sieve_file_storage_init_default(struct sieve_instance *svinst, T_BEGIN { if (sieve_file_storage_do_init_default(fstorage, active_path, - error_r) < 0) { + error_r) < 0) sieve_storage_unref(&storage); - storage = NULL; - } } T_END; return storage; diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c index 9230ae720ab813fbf26ba5dd36cd87886b5948fa..5c28ac1315d29ed6a999e3e9220617589c811ec5 100644 --- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c +++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c @@ -1123,10 +1123,8 @@ static void imap_filter_sieve_user_deinit(struct mail_user *user) sieve_error_handler_unref(&ifsuser->master_ehandler); - if (ifsuser->storage != NULL) - sieve_storage_unref(&ifsuser->storage); - if (ifsuser->global_storage != NULL) - sieve_storage_unref(&ifsuser->global_storage); + sieve_storage_unref(&ifsuser->storage); + sieve_storage_unref(&ifsuser->global_storage); sieve_deinit(&ifsuser->svinst); if (ifsuser->dup_db != NULL) mail_duplicate_db_deinit(&ifsuser->dup_db); diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c index 683491b7565d18d43b0d575812f8345ee4455164..57f3ef13c64999d181c272838f4b89d18bf20d65 100644 --- a/src/plugins/imapsieve/imap-sieve.c +++ b/src/plugins/imapsieve/imap-sieve.c @@ -112,8 +112,7 @@ void imap_sieve_deinit(struct imap_sieve **_isieve) sieve_error_handler_unref(&isieve->master_ehandler); - if (isieve->storage != NULL) - sieve_storage_unref(&isieve->storage); + sieve_storage_unref(&isieve->storage); sieve_extension_unregister(isieve->ext_imapsieve); sieve_extension_unregister(isieve->ext_vnd_imapsieve); sieve_deinit(&isieve->svinst);