diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 9cf3a69b9aa223a8710dd46603dc9f20df679861..caafd6294d5141a2b936faee999b8e8831da48b6 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -947,8 +947,7 @@ int sieve_storage_active_script_open(struct sieve_storage *storage,
 	if (ret == 0 ||
 	    (storage->flags & SIEVE_STORAGE_FLAG_SYNCHRONIZING) != 0 ||
 	    storage->default_location == NULL) {
-		i_assert(script != NULL);
-		if (error_code_r != NULL)
+		if (ret < 0 && error_code_r != NULL)
 			*error_code_r = storage->error_code;
 		*script_r = script;
 		return ret;