From b21dd8cf0590bd17e96a50c3e8b301ca96e9099c Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Wed, 21 Nov 2018 09:35:50 -0800 Subject: [PATCH] Fix trailing space after date. The space between date and time was being eagerly skipped when it shouldn't. --- src/de.rs | 13 ++++++------- test-suite/tests/datetime.rs | 2 ++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/de.rs b/src/de.rs index 491ae47..b5633ea 100644 --- a/src/de.rs +++ b/src/de.rs @@ -1035,13 +1035,12 @@ impl<'a> Deserializer<'a> { let start = self.tokens.substr_offset(date); // Check for space separated date and time. - if let Some((_, Token::Whitespace(s))) = self.peek()? { - if s == " " { - self.next()?; - // Skip past the hour. - if let Some((_, Token::Keylike(_))) = self.peek()? { - self.next()?; - } + let mut lookahead = self.tokens.clone(); + if let Ok(Some((_, Token::Whitespace(" ")))) = lookahead.next() { + // Check if hour follows. + if let Ok(Some((_, Token::Keylike(_)))) = lookahead.next() { + self.next()?; // skip space + self.next()?; // skip keylike hour } } diff --git a/test-suite/tests/datetime.rs b/test-suite/tests/datetime.rs index f3b77e3..a0064fb 100644 --- a/test-suite/tests/datetime.rs +++ b/test-suite/tests/datetime.rs @@ -21,6 +21,8 @@ fn times() { good("1997-09-09T09:09:09-09:09"); good("1997-09-09T09:09:09"); good("1997-09-09"); + dogood("1997-09-09 ", "1997-09-09"); + dogood("1997-09-09 # comment", "1997-09-09"); good("09:09:09"); good("1997-09-09T09:09:09.09Z"); good("1997-09-09T09:09:09.09+09:09");