diff options
| author | bors <bors@rust-lang.org> | 2013-06-16 05:33:59 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-06-16 05:33:59 -0700 |
| commit | c1548991cfb36028ad9e274c690e410c7dfd2c30 (patch) | |
| tree | dc04b82e6c7354ea970023a7a3012dc2d1ecd357 /src/libextra | |
| parent | 03dff61d99a7c833483100f687f8992b3b24058c (diff) | |
| parent | 9c4f9bb71bbac102621fb53efa8d41351a92350e (diff) | |
| download | rust-c1548991cfb36028ad9e274c690e410c7dfd2c30.tar.gz rust-c1548991cfb36028ad9e274c690e410c7dfd2c30.zip | |
auto merge of #7160 : kballard/rust/terminfo-parm-i-fix, r=thestinger
My latest terminfo work introduced a bug in the handling of %i, which was noticed by @huonw after the PR was already merged in. r? @thestinger
Diffstat (limited to 'src/libextra')
| -rw-r--r-- | src/libextra/terminfo/parm.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/libextra/terminfo/parm.rs b/src/libextra/terminfo/parm.rs index c395b57219c..11f0fc23be5 100644 --- a/src/libextra/terminfo/parm.rs +++ b/src/libextra/terminfo/parm.rs @@ -224,9 +224,9 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables) } } else { return Err(~"stack is empty") }, 'i' => match (copy mparams[0], copy mparams[1]) { - (Number(ref mut x), Number(ref mut y)) => { - *x += 1; - *y += 1; + (Number(x), Number(y)) => { + mparams[0] = Number(x+1); + mparams[1] = Number(y+1); }, (_, _) => return Err(~"first two params not numbers with %i") }, @@ -352,6 +352,7 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables) #[cfg(test)] mod test { use super::*; + use core::result::Ok; #[test] fn test_basic_setabf() { @@ -367,6 +368,16 @@ mod test { } #[test] + fn test_op_i() { + let mut vars = Variables::new(); + assert_eq!(expand(bytes!("%p1%d%p2%d%p3%d%i%p1%d%p2%d%p3%d"), + [Number(1),Number(2),Number(3)], &mut vars), + Ok(bytes!("123233").to_owned())); + assert_eq!(expand(bytes!("%p1%d%p2%d%i%p1%d%p2%d"), [], &mut vars), + Ok(bytes!("0011").to_owned())); + } + + #[test] fn test_param_stack_failure_conditions() { let mut varstruct = Variables::new(); let vars = &mut varstruct; |
