changeset 1288:fa47d787c2aa HEAD

Literal parser broke if \r\n wasn't in buffer at the time '}' was parsed.
author Timo Sirainen <tss@iki.fi>
date Sun, 09 Mar 2003 02:35:20 +0200
parents 38b7fe3a596e
children c6c7867b2f6f
files src/lib-imap/imap-parser.c
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-imap/imap-parser.c	Fri Mar 07 02:40:33 2003 +0200
+++ b/src/lib-imap/imap-parser.c	Sun Mar 09 02:35:20 2003 +0200
@@ -351,9 +351,7 @@
 
 static int imap_parser_literal_end(struct imap_parser *parser)
 {
-	if ((parser->flags & IMAP_PARSE_FLAG_LITERAL_SIZE) != 0)
-		parser->eol = TRUE;
-	else {
+	if ((parser->flags & IMAP_PARSE_FLAG_LITERAL_SIZE) == 0) {
 		if (parser->literal_size > parser->max_literal_size) {
 			/* too long string, abort. */
 			parser->error = "Literal size too large";
@@ -453,10 +451,12 @@
 			imap_parser_save_arg(parser, data,
 					     (size_t)parser->literal_size);
 			parser->cur_pos = (size_t)parser->literal_size;
+			parser->eol = TRUE;
 			return TRUE;
 		}
 	} else {
 		/* we want to save only literal size, not the literal itself. */
+		parser->eol = TRUE;
 		imap_parser_save_arg(parser, NULL, 0);
 		return TRUE;
 	}