From ed5196bcb6f4e9046c0eb24ec58f7fa70a7e44b1 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Fri, 6 Mar 2015 21:36:40 +0100
Subject: [PATCH] lib-sieve: Moved lexical scanner to system pool.

---
 src/lib-sieve/sieve-lexer.c | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/src/lib-sieve/sieve-lexer.c b/src/lib-sieve/sieve-lexer.c
index 579c2310e..c68499aea 100644
--- a/src/lib-sieve/sieve-lexer.c
+++ b/src/lib-sieve/sieve-lexer.c
@@ -64,7 +64,6 @@ const struct sieve_lexer *sieve_lexer_create
 (struct sieve_script *script, struct sieve_error_handler *ehandler,
 	enum sieve_error *error_r)
 {
-	pool_t pool;
 	struct sieve_lexical_scanner *scanner;
 	struct sieve_instance *svinst = sieve_script_svinst(script);
 	struct istream *stream;
@@ -86,9 +85,7 @@ const struct sieve_lexer *sieve_lexer_create
 		return NULL;
 	}
 
-	pool = pool_alloconly_create("sieve_lexer_scanner", 1024);
-	scanner = p_new(pool, struct sieve_lexical_scanner, 1);
-	scanner->pool = pool;
+	scanner = i_new(struct sieve_lexical_scanner, 1);
 	scanner->lexer.scanner = scanner;
 
 	scanner->ehandler = ehandler;
@@ -105,7 +102,7 @@ const struct sieve_lexer *sieve_lexer_create
 	scanner->buffer_pos = 0;
 
 	scanner->lexer.token_type = STT_NONE;
-	scanner->lexer.token_str_value = str_new(pool, 256);
+	scanner->lexer.token_str_value = str_new(default_pool, 256);
 	scanner->lexer.token_int_value = 0;
 	scanner->lexer.token_line = 1;
 
@@ -114,19 +111,18 @@ const struct sieve_lexer *sieve_lexer_create
 	return &scanner->lexer;
 }
 
-void sieve_lexer_free(const struct sieve_lexer **lexer)
+void sieve_lexer_free(const struct sieve_lexer **_lexer)
 {
-	struct sieve_lexical_scanner *scanner = (*lexer)->scanner;
+	const struct sieve_lexer *lexer = *_lexer;
+	struct sieve_lexical_scanner *scanner = lexer->scanner;
 
 	i_stream_unref(&scanner->input);
-
 	sieve_script_unref(&scanner->script);
-
 	sieve_error_handler_unref(&scanner->ehandler);
+	str_free(&scanner->lexer.token_str_value);
 
-	pool_unref(&scanner->pool);
-
-	*lexer = NULL;
+	i_free(scanner);
+	*_lexer = NULL;
 }
 
 /*
-- 
GitLab