@@ -65,7 +65,9 @@ fn lend_mut_impl(
6565 blocking : bool ,
6666) -> Result < ( usize , usize ) , Error > {
6767 let range = unsafe { MemoryRange :: new ( data. as_mut_ptr ( ) as usize , data. len ( ) ) ? } ;
68- let msg = xous:: Message :: new_lend_mut ( opcode, range, Some ( arg1. try_into ( ) . unwrap ( ) ) , Some ( arg2. try_into ( ) . unwrap ( ) ) ) ;
68+ let offset = if arg1 != 0 { Some ( arg1. try_into ( ) . unwrap ( ) ) } else { None } ;
69+ let valid = if arg2 != 0 { Some ( arg2. try_into ( ) . unwrap ( ) ) } else { None } ;
70+ let msg = xous:: Message :: new_lend_mut ( opcode, range, offset, valid) ;
6971
7072 let result = if blocking {
7173 xous:: send_message ( connection, msg) ?
@@ -74,7 +76,9 @@ fn lend_mut_impl(
7476 } ;
7577
7678 match result {
77- xous:: Result :: MemoryReturned ( a, b) => Ok ( ( a. unwrap ( ) . get ( ) , b. unwrap ( ) . get ( ) ) ) ,
79+ xous:: Result :: MemoryReturned ( arg1, arg2) => Ok (
80+ ( arg1. map ( |v| v. get ( ) ) . unwrap_or_default ( ) , arg2. map ( |v| v. get ( ) ) . unwrap_or_default ( ) )
81+ ) ,
7882 xous:: Result :: Error ( e) => Err ( e. into ( ) ) ,
7983 _ => Err ( Error :: InternalError ) ,
8084 }
@@ -109,7 +113,10 @@ fn lend_impl(
109113 blocking : bool ,
110114) -> Result < ( usize , usize ) , Error > {
111115 let range = unsafe { MemoryRange :: new ( data. as_ptr ( ) as usize , data. len ( ) ) ? } ;
112- let msg = xous:: Message :: new_lend ( opcode, range, Some ( arg1. try_into ( ) . unwrap ( ) ) , Some ( arg2. try_into ( ) . unwrap ( ) ) ) ;
116+ let offset = if arg1 != 0 { Some ( arg1. try_into ( ) . unwrap ( ) ) } else { None } ;
117+ let valid = if arg2 != 0 { Some ( arg2. try_into ( ) . unwrap ( ) ) } else { None } ;
118+
119+ let msg = xous:: Message :: new_lend ( opcode, range, offset, valid) ;
113120
114121 let result = if blocking {
115122 xous:: send_message ( connection, msg) ?
@@ -118,7 +125,9 @@ fn lend_impl(
118125 } ;
119126
120127 match result {
121- xous:: Result :: MemoryReturned ( a, b) => Ok ( ( a. unwrap ( ) . get ( ) , b. unwrap ( ) . get ( ) ) ) ,
128+ xous:: Result :: MemoryReturned ( arg1, arg2) => Ok (
129+ ( arg1. map ( |v| v. get ( ) ) . unwrap_or_default ( ) , arg2. map ( |v| v. get ( ) ) . unwrap_or_default ( ) )
130+ ) ,
122131 xous:: Result :: Error ( e) => Err ( e. into ( ) ) ,
123132 _ => Err ( Error :: InternalError ) ,
124133 }
0 commit comments