aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorVojtechStep <vojtechstepancik@outlook.com>2019-08-06 12:16:08 +0200
committerVojtechStep <vojtechstepancik@outlook.com>2019-08-06 12:16:08 +0200
commite2151a4ff6039aecda1eb20e38e7a8b0bb066465 (patch)
treeaec918119324b59499924ec10d102bbc2f040059 /src/lib.rs
parentf5113133d934aa5e0cf9d48be598efd118001f83 (diff)
downloadr-alacritty-vte-e2151a4ff6039aecda1eb20e38e7a8b0bb066465.tar.gz
r-alacritty-vte-e2151a4ff6039aecda1eb20e38e7a8b0bb066465.tar.bz2
r-alacritty-vte-e2151a4ff6039aecda1eb20e38e7a8b0bb066465.zip
Add an implicit zero after trailing semicolon
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs22
1 files changed, 22 insertions, 0 deletions
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(),
@@ -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