diff --git a/src/runtime/src/rpc.rs b/src/runtime/src/rpc.rs index 9d3e1185..a0653fab 100644 --- a/src/runtime/src/rpc.rs +++ b/src/runtime/src/rpc.rs @@ -73,6 +73,7 @@ async unsafe fn recv_value(stream: &TcpStream, tag: Tag<'async_recursion>, da Ok(()) } Tag::List(it) | Tag::Array(it) => { + #[repr(C)] struct List { elements: *mut (), length: u32 }; consume_value!(List, |ptr| { (*ptr).length = proto_async::read_i32(stream).await? as u32; @@ -174,6 +175,7 @@ unsafe fn send_value(writer: &mut W, tag: Tag, data: &mut *const ()) Ok(()) } Tag::Keyword(it) => { + #[repr(C)] struct Keyword<'a> { name: CSlice<'a, u8> }; consume_value!(Keyword, |ptr| { writer.write_string(str::from_utf8((*ptr).name.as_ref()).unwrap())?; @@ -185,6 +187,7 @@ unsafe fn send_value(writer: &mut W, tag: Tag, data: &mut *const ()) // to accurately advance data. } Tag::Object => { + #[repr(C)] struct Object { id: u32 }; consume_value!(*const Object, |ptr| writer.write_u32((**ptr).id))