From dbc3f2f80b1a2528c58cd1aed9ad3b5776bfd764 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@dovecot.fi>
Date: Mon, 11 Dec 2017 17:14:27 +0100
Subject: [PATCH] global: start relying on [io]_stream_unref(NULL) being a
 no-op

Cleanup performed with the following semantic patch:

	@@
	expression E;
	@@

	- if (E != NULL) {
	- 	i_stream_unref(&E);
	- }
	+ i_stream_unref(&E);

	@@
	expression E;
	@@

	- if (E != NULL) {
	- 	o_stream_unref(&E);
	- }
	+ o_stream_unref(&E);
---
 src/lib-managesieve/managesieve-parser.c   |  7 ++-----
 src/lib-sieve-tool/mail-raw.c              |  4 +---
 src/lib-sieve/sieve-script.c               |  3 +--
 src/lib-sieve/storage/ldap/sieve-ldap-db.c |  3 +--
 src/lib-sieve/util/edit-mail.c             | 11 ++---------
 5 files changed, 7 insertions(+), 21 deletions(-)

diff --git a/src/lib-managesieve/managesieve-parser.c b/src/lib-managesieve/managesieve-parser.c
index 8641515a8..cb5b65e67 100644
--- a/src/lib-managesieve/managesieve-parser.c
+++ b/src/lib-managesieve/managesieve-parser.c
@@ -70,8 +70,7 @@ managesieve_parser_create(struct istream *input, size_t max_line_size)
 
 void managesieve_parser_destroy(struct managesieve_parser **parser)
 {
-	if ((*parser)->str_stream != NULL)
-		i_stream_unref(&(*parser)->str_stream);
+	i_stream_unref(&(*parser)->str_stream);
 
 	pool_unref(&(*parser)->pool);
 	i_free(*parser);
@@ -99,9 +98,7 @@ void managesieve_parser_reset(struct managesieve_parser *parser)
 	parser->literal_skip_crlf = FALSE;
 	parser->eol = FALSE;
 
-	if ( parser->str_stream != NULL )
-		i_stream_unref(&parser->str_stream);
-	parser->str_stream = NULL;
+	i_stream_unref(&parser->str_stream);
 }
 
 const char *managesieve_parser_get_error
diff --git a/src/lib-sieve-tool/mail-raw.c b/src/lib-sieve-tool/mail-raw.c
index 09a212f5c..4f4ebed0c 100644
--- a/src/lib-sieve-tool/mail-raw.c
+++ b/src/lib-sieve-tool/mail-raw.c
@@ -220,9 +220,7 @@ struct mail_raw *mail_raw_open_file
 	}
 
 	mailr = mail_raw_create(ruser, input, path, sender, mtime);
-
-	if ( input != NULL )
-		i_stream_unref(&input);
+	i_stream_unref(&input);
 
 	return mailr;
 }
diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c
index 1a222a080..ea43cd79e 100644
--- a/src/lib-sieve/sieve-script.c
+++ b/src/lib-sieve/sieve-script.c
@@ -147,8 +147,7 @@ void sieve_script_unref(struct sieve_script **_script)
 	if ( --script->refcount != 0 )
 		return;
 
-	if ( script->stream != NULL )
-		i_stream_unref(&script->stream);
+	i_stream_unref(&script->stream);
 
 	if ( script->v.destroy != NULL )
 		script->v.destroy(script);
diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-db.c b/src/lib-sieve/storage/ldap/sieve-ldap-db.c
index a046aa580..9f9bc092b 100644
--- a/src/lib-sieve/storage/ldap/sieve-ldap-db.c
+++ b/src/lib-sieve/storage/ldap/sieve-ldap-db.c
@@ -1339,8 +1339,7 @@ sieve_ldap_read_script_callback(struct ldap_connection *conn,
 		} else {
 			sieve_storage_sys_error(storage, "db: "
 				"Search returned more than one entry for Sieve script DN");
-			if (srequest->result != NULL)
-				i_stream_unref(&srequest->result);
+			i_stream_unref(&srequest->result);
 		}
 
 	} else {
diff --git a/src/lib-sieve/util/edit-mail.c b/src/lib-sieve/util/edit-mail.c
index f01eaf110..7254cab86 100644
--- a/src/lib-sieve/util/edit-mail.c
+++ b/src/lib-sieve/util/edit-mail.c
@@ -350,10 +350,7 @@ void edit_mail_reset(struct edit_mail *edmail)
 	struct _header_index *header_idx;
 	struct _header_field_index *field_idx;
 
-	if ( edmail->stream != NULL ) {
-		i_stream_unref(&edmail->stream);
-		edmail->stream = NULL;
-	}
+	i_stream_unref(&edmail->stream);
 
 	field_idx = edmail->header_fields_head;
 	while ( field_idx != NULL ) {
@@ -387,11 +384,7 @@ void edit_mail_unwrap(struct edit_mail **edmail)
 		return;
 
 	edit_mail_reset(*edmail);
-
-	if ( (*edmail)->wrapped_stream != NULL ) {
-		i_stream_unref(&(*edmail)->wrapped_stream);
-		(*edmail)->wrapped_stream = NULL;
-	}
+	i_stream_unref(&(*edmail)->wrapped_stream);
 
 	parent = (*edmail)->parent;
 
-- 
GitLab