@@ -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) ]
353353mod 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