diff options
author | VojtechStep <vojtechstepancik@outlook.com> | 2019-08-06 12:16:08 +0200 |
---|---|---|
committer | VojtechStep <vojtechstepancik@outlook.com> | 2019-08-06 12:16:08 +0200 |
commit | e2151a4ff6039aecda1eb20e38e7a8b0bb066465 (patch) | |
tree | aec918119324b59499924ec10d102bbc2f040059 | |
parent | f5113133d934aa5e0cf9d48be598efd118001f83 (diff) | |
download | r-alacritty-vte-e2151a4ff6039aecda1eb20e38e7a8b0bb066465.tar.gz r-alacritty-vte-e2151a4ff6039aecda1eb20e38e7a8b0bb066465.tar.bz2 r-alacritty-vte-e2151a4ff6039aecda1eb20e38e7a8b0bb066465.zip |
Add an implicit zero after trailing semicolon
-rw-r--r-- | src/lib.rs | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -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(), @@ -558,6 +567,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() { // Create dispatcher and check state |