From 73497e78a920e1eb02666b50da5c040e491f380f Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Sun, 4 Dec 2016 22:50:45 -0500 Subject: Followup to 9f8013c2 (fix for issue #7) - deal with empty messages --- src/lib.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 6ba0ce3..f362919 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -447,7 +447,9 @@ pub fn parse_headers(raw_data: &[u8]) -> Result<(Vec, usize), MailPa let mut headers: Vec = Vec::new(); let mut ix = 0; loop { - if raw_data[ix] == b'\n' { + if ix >= raw_data.len() { + break; + } else if raw_data[ix] == b'\n' { ix = ix + 1; break; } else if raw_data[ix] == b'\r' { @@ -462,9 +464,6 @@ pub fn parse_headers(raw_data: &[u8]) -> Result<(Vec, usize), MailPa let (header, ix_next) = try!(parse_header(&raw_data[ix..])); headers.push(header); ix = ix + ix_next; - if ix >= raw_data.len() { - break; - } } Ok((headers, ix)) } @@ -976,4 +975,10 @@ mod tests { assert_eq!(mail.subparts[0].ctype.mimetype, "text/plain"); assert_eq!(mail.subparts[0].get_body().unwrap(), ""); } + + #[test] + fn test_empty() { + let mail = parse_mail("".as_bytes()).unwrap(); + assert_eq!(mail.get_body().unwrap(), ""); + } } -- cgit v1.2.3