From 2568db5e5635acc7fb99d90d2fc7aca9ca912714 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sun, 9 Mar 2003 02:35:20 +0200 Subject: [PATCH] Literal parser broke if \r\n wasn't in buffer at the time '}' was parsed. --HG-- branch : HEAD --- src/lib-imap/imap-parser.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib-imap/imap-parser.c b/src/lib-imap/imap-parser.c index 3816e1bee4..20d44cd8c8 100644 --- a/src/lib-imap/imap-parser.c +++ b/src/lib-imap/imap-parser.c @@ -351,9 +351,7 @@ static int imap_parser_read_string(struct imap_parser *parser, 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 @@ static int imap_parser_read_literal_data(struct imap_parser *parser, 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; } -- 2.47.3