@@ -2129,15 +2129,15 @@ mod test {
2129
2129
fn test_serialize_deserialize ( ) {
2130
2130
let client_id = ClientId ( 5 ) ;
2131
2131
let request_id = RequestId ( 7 ) ;
2132
- let mut shared_memory = [ 0u8 ; 16 ] ;
2132
+ let mut output_buffer = [ 0u8 ; 16 ] ;
2133
2133
let request = GetRandom {
2134
2134
client_id,
2135
2135
request_id,
2136
- output : & mut shared_memory ,
2136
+ output : & mut output_buffer ,
2137
2137
} ;
2138
2138
let request_raw: RequestRaw = request. into ( ) ;
2139
2139
let request_raw_ptr = & request_raw as * const RequestRaw as * const u8 ;
2140
- // SAFETY: Raw data format of RequestResponseRawPair in : RequestRaw || ResponseRaw
2140
+ // SAFETY: RequestRaw is reconstructed from instance on the stack created just now
2141
2141
let reconstructed_request_raw = unsafe { RequestRaw :: from_raw ( request_raw_ptr) }
2142
2142
. expect ( "failed to create raw request from pointer." ) ;
2143
2143
let always_valid = |_data : * const u8 , _size : u32 | true ;
@@ -2152,8 +2152,8 @@ mod test {
2152
2152
} => {
2153
2153
assert_eq ! ( reconstructed_client_id, client_id) ;
2154
2154
assert_eq ! ( reconstructed_request_id, request_id) ;
2155
- assert_eq ! ( reconstructed_output. as_ptr( ) , shared_memory . as_ptr( ) ) ;
2156
- assert_eq ! ( reconstructed_output. len( ) , shared_memory . len( ) ) ;
2155
+ assert_eq ! ( reconstructed_output. as_ptr( ) , output_buffer . as_ptr( ) ) ;
2156
+ assert_eq ! ( reconstructed_output. len( ) , output_buffer . len( ) ) ;
2157
2157
}
2158
2158
_ => {
2159
2159
panic ! ( "Unexpected reconstructed request type" )
@@ -2166,7 +2166,7 @@ mod test {
2166
2166
let client_id = ClientId ( 5 ) ;
2167
2167
let request_id = RequestId ( 7 ) ;
2168
2168
const OUTPUT_SIZE : usize = 16 ;
2169
- let mut shared_memory = [ 0u8 ; size_of :: < RequestRaw > ( ) + OUTPUT_SIZE ] ;
2169
+ let mut shared_memory = [ 0u8 ; size_of :: < RequestResponseRawPair > ( ) + OUTPUT_SIZE ] ;
2170
2170
let request_response_start = shared_memory. as_mut_ptr ( ) ;
2171
2171
// SAFETY: Raw data format in shared memory: RequestResponseRawPair || output
2172
2172
let output_start = unsafe {
@@ -2218,7 +2218,7 @@ mod test {
2218
2218
let client_id = ClientId ( 5 ) ;
2219
2219
let request_id = RequestId ( 7 ) ;
2220
2220
const OUTPUT_SIZE : usize = 16 ;
2221
- let mut shared_memory = [ 0u8 ; size_of :: < RequestRaw > ( ) + OUTPUT_SIZE ] ;
2221
+ let mut shared_memory = [ 0u8 ; size_of :: < RequestResponseRawPair > ( ) + OUTPUT_SIZE ] ;
2222
2222
let request_response_start = shared_memory. as_mut_ptr ( ) ;
2223
2223
// SAFETY: Raw data format in shared memory: RequestResponseRawPair || output
2224
2224
let output_start = unsafe {
@@ -2232,13 +2232,15 @@ mod test {
2232
2232
// SAFETY: Raw data format in shared memory: RequestResponseRawPair || output
2233
2233
output : unsafe { slice:: from_raw_parts_mut ( output_start, OUTPUT_SIZE ) } ,
2234
2234
} ;
2235
- let request_raw = request. into ( ) ;
2235
+ let request_raw: RequestRaw = request. into ( ) ;
2236
2236
2237
2237
// Invalidate enum tag of raw request
2238
- // SAFETY: Raw data format of RequestResponseRawPair in shared memory: RequestRaw || ResponseRaw
2238
+ // SAFETY: Populating RequestRaw member of RequestResponseRawPair and modifying its tag
2239
2239
unsafe {
2240
- core:: ptr:: copy ( & request_raw, request_response_start as * mut RequestRaw , 1 ) ;
2241
- let tag: * mut u8 = request_response_start. add ( offset_of ! ( RequestRaw , data) ) ;
2240
+ let pair_request_raw: * mut u8 =
2241
+ request_response_start. add ( offset_of ! ( RequestResponseRawPair , request) ) ;
2242
+ * ( pair_request_raw as * mut RequestRaw ) = request_raw;
2243
+ let tag: * mut u8 = pair_request_raw. add ( offset_of ! ( RequestRaw , data) ) ;
2242
2244
const INVALID_TAG : u8 = 0xFF ;
2243
2245
* tag = INVALID_TAG ;
2244
2246
}
0 commit comments