@@ -224,9 +224,9 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables)
224
224
}
225
225
} else { return Err ( ~"stack is empty") } ,
226
226
'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 ) ;
230
230
} ,
231
231
( _, _) => return Err ( ~"first two params not numbers with %i")
232
232
} ,
@@ -352,6 +352,7 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables)
352
352
#[ cfg ( test) ]
353
353
mod test {
354
354
use super :: * ;
355
+ use core:: result:: Ok ;
355
356
356
357
#[ test]
357
358
fn test_basic_setabf ( ) {
@@ -366,6 +367,16 @@ mod test {
366
367
bytes!( "21" ) . to_owned( ) ) ;
367
368
}
368
369
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
+
369
380
#[ test]
370
381
fn test_param_stack_failure_conditions( ) {
371
382
let mut varstruct = Variables :: new ( ) ;
0 commit comments