From 1b659eb6ae2e5b6e53eaecaf7e1324ef92fc541d Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 3 Dec 2021 16:21:20 -0500 Subject: fix receiving empty params --- src/screen.rs | 10 +++++----- tests/weird.rs | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/screen.rs b/src/screen.rs index 2dba4b5..74e0559 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -1571,7 +1571,7 @@ impl vte::Perform for Screen { } fn canonicalize_params_1(params: &vte::Params, default: u16) -> u16 { - let first = params.iter().next().map_or(0, |x| x[0]); + let first = params.iter().next().map_or(0, |x| *x.get(0).unwrap_or(&0)); if first == 0 { default } else { @@ -1585,10 +1585,10 @@ fn canonicalize_params_2( default2: u16, ) -> (u16, u16) { let mut iter = params.iter(); - let first = iter.next().map_or(0, |x| x[0]); + let first = iter.next().map_or(0, |x| *x.get(0).unwrap_or(&0)); let first = if first == 0 { default1 } else { first }; - let second = iter.next().map_or(0, |x| x[0]); + let second = iter.next().map_or(0, |x| *x.get(0).unwrap_or(&0)); let second = if second == 0 { default2 } else { second }; (first, second) @@ -1599,10 +1599,10 @@ fn canonicalize_params_decstbm( size: crate::grid::Size, ) -> (u16, u16) { let mut iter = params.iter(); - let top = iter.next().map_or(0, |x| x[0]); + let top = iter.next().map_or(0, |x| *x.get(0).unwrap_or(&0)); let top = if top == 0 { 1 } else { top }; - let bottom = iter.next().map_or(0, |x| x[0]); + let bottom = iter.next().map_or(0, |x| *x.get(0).unwrap_or(&0)); let bottom = if bottom == 0 { size.rows } else { bottom }; (top, bottom) diff --git a/tests/weird.rs b/tests/weird.rs index bae2aeb..46ecd20 100644 --- a/tests/weird.rs +++ b/tests/weird.rs @@ -4,3 +4,11 @@ mod helpers; fn intermediate_control() { helpers::fixture("intermediate_control"); } + +#[test] +fn many_empty_params() { + let mut parser = vt100::Parser::default(); + parser.process(b"\x1b[::::::::::::::::::::::::::::::::@"); + parser.process(b"\x1b[::::::::::::::::::::::::::::::::H"); + parser.process(b"\x1b[::::::::::::::::::::::::::::::::r"); +} -- cgit v1.2.3-54-g00ecf