diff --git a/src/arch.rs b/src/arch.rs index 98943d3..cf71fa0 100644 --- a/src/arch.rs +++ b/src/arch.rs @@ -66,7 +66,7 @@ pub fn initialise_call_frame(stack: &mut Stack, init: uintptr_t, args: &[uintptr .. Registers::new() }; - match into_fields!(regs { rdi, r13, r14, r15 } <- args.iter()) { + match into_fields!(regs { rdi, r13, r14, r15 } <- args.iter().cloned()) { Some(mut args) => if args.next().is_some() { panic!("too many arguments") }, diff --git a/src/macros.rs b/src/macros.rs index 403560b..a4d0fdb 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -2,7 +2,7 @@ macro_rules! __into_fields { ($x:ident { $field:ident } <- $iter:ident) => { match $iter.next() { Some(value) => { - $x.$field = *value; + $x.$field = value; Some($iter) } None => None @@ -11,7 +11,7 @@ macro_rules! __into_fields { ($x:ident { $field:ident, $($fields_rest:ident),* } <- $iter:ident) => { match $iter.next() { Some(value) => { - $x.$field = *value; + $x.$field = value; __into_fields!($x { $($fields_rest),* } <- $iter) } None => None