From 665fba16a75e82ef9007f745123d062d761a479a Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Fri, 6 Mar 2015 21:14:01 +0100
Subject: [PATCH] lib-sieve: Cleaned up error handling for the lexical scanner.

---
 src/lib-sieve/sieve-lexer.c | 23 +++++++++++------------
 src/lib-sieve/sieve-lexer.h |  2 +-
 2 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/src/lib-sieve/sieve-lexer.c b/src/lib-sieve/sieve-lexer.c
index fc78b1d54..579c2310e 100644
--- a/src/lib-sieve/sieve-lexer.c
+++ b/src/lib-sieve/sieve-lexer.c
@@ -285,13 +285,13 @@ sieve_lexer_scan_hash_comment(struct sieve_lexical_scanner *scanner)
 	while ( sieve_lexer_curchar(scanner) != '\n' ) {
 		switch( sieve_lexer_curchar(scanner) ) {
 		case -1:
-			if ( scanner->input->eof ) {
-				sieve_lexer_warning(lexer,
-					"no newline (CRLF) at end of hash comment at end of file");
-				lexer->token_type = STT_WHITESPACE;
-			} else {
+			if ( !scanner->input->eof ) {
 				lexer->token_type = STT_ERROR;
+				return FALSE;
 			}
+			sieve_lexer_warning(lexer,
+				"no newline (CRLF) at end of hash comment at end of file");
+			lexer->token_type = STT_WHITESPACE;
 			return TRUE;
 		case '\0':
 			sieve_lexer_error
@@ -532,10 +532,11 @@ sieve_lexer_scan_raw_token(struct sieve_lexical_scanner *scanner)
 
 	/* EOF */
 	case -1:
-		if ( scanner->input->eof )
-		  lexer->token_type = STT_EOF;
-		else
+		if ( !scanner->input->eof ) {
 			lexer->token_type = STT_ERROR;
+			return FALSE;
+		}
+		lexer->token_type = STT_EOF;
 		return TRUE;
 
 	default:
@@ -816,7 +817,7 @@ sieve_lexer_scan_raw_token(struct sieve_lexical_scanner *scanner)
 	}
 }
 
-bool sieve_lexer_skip_token(const struct sieve_lexer *lexer)
+void sieve_lexer_skip_token(const struct sieve_lexer *lexer)
 {
 	/* Scan token while skipping whitespace */
 	do {
@@ -830,10 +831,8 @@ bool sieve_lexer_skip_token(const struct sieve_lexer *lexer)
 					"error reading script during lexical analysis: %s",
 					i_stream_get_error(scanner->input));
 			}
-			return FALSE;
+			return;
 		}
 	} while ( lexer->token_type == STT_WHITESPACE );
-
-	return TRUE;
 }
 
diff --git a/src/lib-sieve/sieve-lexer.h b/src/lib-sieve/sieve-lexer.h
index 2fa8aef5d..bc90e59c2 100644
--- a/src/lib-sieve/sieve-lexer.h
+++ b/src/lib-sieve/sieve-lexer.h
@@ -67,7 +67,7 @@ void sieve_lexer_free(const struct sieve_lexer **lexer);
  * Scanning
  */
 
-bool sieve_lexer_skip_token(const struct sieve_lexer *lexer);
+void sieve_lexer_skip_token(const struct sieve_lexer *lexer);
 
 /*
  * Token access
-- 
GitLab