diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c
index 33aa925daf76077d9b4c18963acb63eacd85f4cb..ade6465d9d4213e61cdad2cb7bf917e7ce93d37d 100644
--- a/src/lib-sieve/sieve-script.c
+++ b/src/lib-sieve/sieve-script.c
@@ -894,11 +894,15 @@ sieve_script_sequence_next(struct sieve_script_sequence *sseq,
 void sieve_script_sequence_free(struct sieve_script_sequence **_sseq)
 {
 	struct sieve_script_sequence *sseq = *_sseq;
+
+	if (sseq == NULL)
+		return;
+	*_sseq = NULL;
+
 	struct sieve_storage *storage = sseq->storage;
 
 	if (storage->v.script_sequence_destroy != NULL)
 		storage->v.script_sequence_destroy(sseq);
 
 	sieve_storage_unref(&storage);
-	*_sseq = NULL;
 }