From dbff05d1f2c75e9978875f560189cfe2412bb360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gianguido=20Sor=C3=A0?= Date: Sat, 14 May 2022 11:49:15 +0200 Subject: [PATCH] fix: clamp TextEntryPayloads content slice to the real amount of fields used in the modal --- services/gam/src/modal/textentry.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/services/gam/src/modal/textentry.rs b/services/gam/src/modal/textentry.rs index 74c782a20..9f6d3f4dd 100644 --- a/services/gam/src/modal/textentry.rs +++ b/services/gam/src/modal/textentry.rs @@ -16,7 +16,7 @@ pub type ValidatorErr = xous_ipc::String::<256>; pub type Payloads = [TextEntryPayload; MAX_FIELDS as usize]; #[derive(Debug, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize, Copy, Clone, Eq, PartialEq, Default)] -pub struct TextEntryPayloads (Payloads); +pub struct TextEntryPayloads (Payloads, usize); impl TextEntryPayloads { pub fn first(&self) -> TextEntryPayload { @@ -24,10 +24,7 @@ impl TextEntryPayloads { } pub fn content(&self) -> Vec { - self.0 - .iter().cloned() - .filter(|payload| payload.dirty) - .collect() + self.0[..self.1].to_vec() } } @@ -400,6 +397,7 @@ impl ActionApi for TextEntry { } let mut payloads: TextEntryPayloads = Default::default(); + payloads.1 = self.max_field_amount as usize; payloads.0[..self.max_field_amount as usize].copy_from_slice(&self.action_payloads[..self.max_field_amount as usize]); let buf = Buffer::into_buf(payloads).expect("couldn't convert message to payload"); buf.send(self.action_conn, self.action_opcode).map(|_| ()).expect("couldn't send action message");