Skip to content

Commit c154899

Browse files
committed
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
2 parents 03dff61 + 9c4f9bb commit c154899

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/libextra/terminfo/parm.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,9 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables)
224224
}
225225
} else { return Err(~"stack is empty") },
226226
'i' => match (copy mparams[0], copy mparams[1]) {
227-
(Number(ref mut x), Number(ref mut y)) => {
228-
*x += 1;
229-
*y += 1;
227+
(Number(x), Number(y)) => {
228+
mparams[0] = Number(x+1);
229+
mparams[1] = Number(y+1);
230230
},
231231
(_, _) => return Err(~"first two params not numbers with %i")
232232
},
@@ -352,6 +352,7 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables)
352352
#[cfg(test)]
353353
mod test {
354354
use super::*;
355+
use core::result::Ok;
355356

356357
#[test]
357358
fn test_basic_setabf() {
@@ -366,6 +367,16 @@ mod test {
366367
bytes!("21").to_owned());
367368
}
368369

370+
#[test]
371+
fn test_op_i() {
372+
let mut vars = Variables::new();
373+
assert_eq!(expand(bytes!("%p1%d%p2%d%p3%d%i%p1%d%p2%d%p3%d"),
374+
[Number(1),Number(2),Number(3)], &mut vars),
375+
Ok(bytes!("123233").to_owned()));
376+
assert_eq!(expand(bytes!("%p1%d%p2%d%i%p1%d%p2%d"), [], &mut vars),
377+
Ok(bytes!("0011").to_owned()));
378+
}
379+
369380
#[test]
370381
fn test_param_stack_failure_conditions() {
371382
let mut varstruct = Variables::new();

0 commit comments

Comments
 (0)