diff --git a/src/lib-sieve/sieve-binary.c b/src/lib-sieve/sieve-binary.c
index eeff56c3c0db9efbd7ca56cb4f49ac2a2f5bc527..9d620a7eb88dbb2f1ba0831b72858089d4a6adf5 100644
--- a/src/lib-sieve/sieve-binary.c
+++ b/src/lib-sieve/sieve-binary.c
@@ -167,8 +167,7 @@ void sieve_binary_unref(struct sieve_binary **_sbin)
 	sieve_binary_update_resource_usage(sbin);
 	sieve_binary_extensions_free(sbin);
 
-	if (sbin->script != NULL)
-		sieve_script_unref(&sbin->script);
+	sieve_script_unref(&sbin->script);
 
 	event_unref(&sbin->event);
 	pool_unref(&sbin->pool);
diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c
index 13a8f6e06f687076848a6657782bae3cecc20917..0258d7b7509e7f776a98515e54439eacaddadf8b 100644
--- a/src/lib-sieve/sieve-script.c
+++ b/src/lib-sieve/sieve-script.c
@@ -506,8 +506,7 @@ bool sieve_script_binary_dump_metadata(struct sieve_script *script,
 			script, denv, sblock, offset);
 	}
 
-	if (adhoc_script != NULL)
-		sieve_script_unref(&adhoc_script);
+	sieve_script_unref(&adhoc_script);
 	return result;
 }
 
@@ -593,8 +592,7 @@ sieve_script_copy_from_default(struct sieve_script *script, const char *newname)
 			ret = -1;
 			(void)sieve_script_delete(newscript, TRUE);
 		}
-		if (newscript != NULL)
-			sieve_script_unref(&newscript);
+		sieve_script_unref(&newscript);
 
 		if (ret < 0) {
 			e_error(storage->event,
diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 4f821e950239250e32eef9943109c18d3f634a53..72e8e61514c4e4d0deda937e64e2e80b285d64f6 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -753,7 +753,6 @@ sieve_storage_open_script(struct sieve_storage *storage, const char *name,
 
 	/* Error */
 	sieve_script_unref(&script);
-	script = NULL;
 
 	if (storage->error_code == SIEVE_ERROR_NOT_FOUND &&
 	    (storage->flags & SIEVE_STORAGE_FLAG_SYNCHRONIZING) == 0 &&
@@ -1061,8 +1060,7 @@ sieve_storage_save_create_event(struct sieve_storage *storage,
 
 static void sieve_storage_save_cleanup(struct sieve_storage_save_context *sctx)
 {
-	if (sctx->scriptobject != NULL)
-		sieve_script_unref(&sctx->scriptobject);
+	sieve_script_unref(&sctx->scriptobject);
 }
 
 static void sieve_storage_save_deinit(struct sieve_storage_save_context **_sctx)
@@ -1258,8 +1256,7 @@ int sieve_storage_save_commit(struct sieve_storage_save_context **_sctx)
 			ret = -1;
 			(void)sieve_script_delete(script, TRUE);
 		}
-		if (script != NULL)
-			sieve_script_unref(&script);
+		sieve_script_unref(&script);
 
 		if (ret < 0) {
 			e_error(sctx->event,
diff --git a/src/managesieve/cmd-getscript.c b/src/managesieve/cmd-getscript.c
index f3c63cc77d615525d474f6809f35163c233d329c..16c690735984b20b6a9d22088ed9e82ced4f97d8 100644
--- a/src/managesieve/cmd-getscript.c
+++ b/src/managesieve/cmd-getscript.c
@@ -30,8 +30,7 @@ static bool cmd_getscript_finish(struct cmd_getscript_context *ctx)
 	struct client_command_context *cmd = ctx->cmd;
 	struct client *client = ctx->client;
 
-	if (ctx->script != NULL)
-		sieve_script_unref(&ctx->script);
+	sieve_script_unref(&ctx->script);
 
 	if (ctx->failed) {
 		if (client->output->closed) {
diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c
index 5b77664cfa66e0ff6bf0bcf13a9b42acdafdff15..14220e53a5f8cc4b0380f5c82f78c2981820daae 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c
@@ -35,8 +35,7 @@ static int cmd_sieve_get_run(struct doveadm_sieve_cmd_context *_ctx)
 			sieve_storage_get_last_error(_ctx->storage,
 						     &error_code));
 		doveadm_sieve_cmd_failed_error(_ctx, error_code);
-		if (script != NULL)
-			sieve_script_unref(&script);
+		sieve_script_unref(&script);
 		return -1;
 	}
 
diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c
index f21fc23223eac19bb274f998200f31032ebb8f25..2ce6c193ef9d3ac146c4829f617f98ac127ac7e8 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c
@@ -135,8 +135,7 @@ static int cmd_sieve_put_run(struct doveadm_sieve_cmd_context *_ctx)
 			doveadm_sieve_cmd_failed_error(_ctx, error_code);
 			ret = -1;
 		}
-		if (script != NULL)
-			sieve_script_unref(&script);
+		sieve_script_unref(&script);
 	}
 
 	i_assert(input->eof);
diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c
index 6e025b4481ccf7f8b8d2afa679db7ce68f076c70..5b1b7c76384618cf1fd6121711cc3fdf3dd59e4c 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c
@@ -40,8 +40,7 @@ static int cmd_sieve_rename_run(struct doveadm_sieve_cmd_context *_ctx)
 		ret = -1;
 	}
 
-	if (script != NULL)
-		sieve_script_unref(&script);
+	sieve_script_unref(&script);
 	return ret;
 }
 
diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
index ac268fa9c399832b06fabc6c3c1b04df8e87d5d6..5028dcf1f23a47ec87680427fa1742a5b7a7ef1b 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
@@ -62,8 +62,7 @@ static void mail_sieve_user_deinit(struct mail_user *user)
 	struct sieve_mail_user *suser = SIEVE_USER_CONTEXT(user);
 
 	if (suser->svinst != NULL) {
-		if (suser->sieve_storage != NULL)
-			sieve_storage_unref(&suser->sieve_storage);
+		sieve_storage_unref(&suser->sieve_storage);
 		sieve_deinit(&suser->svinst);
 	}
 
@@ -184,8 +183,7 @@ sieve_attribute_set_active(struct mail_storage *storage,
 			scriptname,
 			sieve_storage_get_last_error(svstorage, NULL));
 	}
-	if (script != NULL)
-		sieve_script_unref(&script);
+	sieve_script_unref(&script);
 	sieve_storage_set_modified(svstorage, last_change);
 	return ret;
 }
diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
index ec3e3c905e68a7c25f45311eb8b1599a9f7b0bb3..0f9b2f195bf72dc7a0b57026156d5ce0940a4f3f 100644
--- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c
+++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
@@ -312,8 +312,7 @@ void imap_filter_sieve_context_free(struct imap_filter_sieve_context **_sctx)
 	for (i = 0; i < sctx->scripts_count; i++) {
 		if (scripts[i].binary != NULL)
 			sieve_close(&scripts[i].binary);
-		if (scripts[i].script != NULL)
-			sieve_script_unref(&scripts[i].script);
+		sieve_script_unref(&scripts[i].script);
 	}
 
 	if (sctx->trace_log != NULL)
diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c
index b7c4e9a62dbacf742bfdbda9470d460e4093184f..0dd7a0151e2068ce00bbc3088b6e43a0c30e857d 100644
--- a/src/plugins/imapsieve/imap-sieve.c
+++ b/src/plugins/imapsieve/imap-sieve.c
@@ -549,8 +549,7 @@ void imap_sieve_run_deinit(struct imap_sieve_run **_isrun)
 	for (i = 0; i < isrun->scripts_count; i++) {
 		if (isrun->scripts[i].binary != NULL)
 			sieve_close(&isrun->scripts[i].binary);
-		if (isrun->scripts[i].script != NULL)
-			sieve_script_unref(&isrun->scripts[i].script);
+		sieve_script_unref(&isrun->scripts[i].script);
 	}
 	if (isrun->user_ehandler != NULL)
 		sieve_error_handler_unref(&isrun->user_ehandler);
diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index 2c8c90757b06f63504db6c89197bf8e598c1b0b9..aca30310993bc159a54115479fc800464781ead5 100644
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c
@@ -878,8 +878,7 @@ lda_sieve_free_scripts(struct lda_sieve_run_context *srctx)
 
 	for (i = 0; i < srctx->script_count; i++)
 		sieve_script_unref(&srctx->scripts[i]);
-	if (srctx->discard_script != NULL)
-		sieve_script_unref(&srctx->discard_script);
+	sieve_script_unref(&srctx->discard_script);
 }
 
 static void