From 8f6f6feacdc2b74f3c46fc51a66acabb32012c40 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Fri, 21 Jun 2024 01:21:48 +0200 Subject: [PATCH] lib-sieve: sieve-storage - Make sieve_storage_unref(NULL) a no-op --- src/lib-sieve/plugins/include/ext-include-common.c | 6 ++---- src/lib-sieve/sieve-storage.c | 11 +++++------ src/lib-sieve/storage/file/sieve-file-storage.c | 4 +--- src/plugins/imap-filter-sieve/imap-filter-sieve.c | 6 ++---- src/plugins/imapsieve/imap-sieve.c | 3 +-- 5 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/lib-sieve/plugins/include/ext-include-common.c b/src/lib-sieve/plugins/include/ext-include-common.c index 7249ad73d..114a4f625 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 52eceb44a..3a25bd3e2 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 3f470c10c..837a53e1a 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 9230ae720..5c28ac131 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 683491b75..57f3ef13c 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); -- GitLab