about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-06-16 05:33:59 -0700
committerbors <bors@rust-lang.org>2013-06-16 05:33:59 -0700
commitc1548991cfb36028ad9e274c690e410c7dfd2c30 (patch)
treedc04b82e6c7354ea970023a7a3012dc2d1ecd357 /src
parent03dff61d99a7c833483100f687f8992b3b24058c (diff)
parent9c4f9bb71bbac102621fb53efa8d41351a92350e (diff)
downloadrust-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')
-rw-r--r--src/libextra/terminfo/parm.rs17
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;