From e2151a4ff6039aecda1eb20e38e7a8b0bb066465 Mon Sep 17 00:00:00 2001 From: VojtechStep Date: Tue, 6 Aug 2019 12:16:08 +0200 Subject: Add an implicit zero after trailing semicolon --- src/lib.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 7fa4c22..0813a4d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -298,7 +298,16 @@ impl Parser { let idx = self.num_params; self.params[idx] = self.param; self.num_params += 1; + } else { + // Last character was a semicolon, add a trailing zero + + let idx = self.num_params; + if idx != MAX_PARAMS { + self.params[idx] = 0; + self.num_params += 1; + } } + performer.csi_dispatch( self.params(), self.intermediates(), @@ -557,6 +566,19 @@ mod tests { } + #[test] + fn parse_trailing_semi() { + let mut dispatcher = CsiDispatcher::default(); + let mut parser = Parser::new(); + + for byte in b"\x1b[4;m" { + parser.advance(&mut dispatcher, *byte); + } + + assert_eq!(dispatcher.params.len(), 1); + assert_eq!(dispatcher.params[0], &[4, 0]); + } + #[test] fn parse_semi_set_underline() { -- cgit