diff --git a/melib/src/mailbox/email/attachments.rs b/melib/src/mailbox/email/attachments.rs index 165533bd..e050c72a 100644 --- a/melib/src/mailbox/email/attachments.rs +++ b/melib/src/mailbox/email/attachments.rs @@ -81,7 +81,7 @@ impl AttachmentBuilder { } assert!(boundary.is_some()); let _boundary = boundary.unwrap(); - let offset = _boundary.as_ptr() as usize - value.as_ptr() as usize; + let offset = (_boundary.as_ptr() as usize).wrapping_sub(value.as_ptr() as usize); let boundary = SliceBuild::new(offset, _boundary.len()); let subattachments = Self::subattachments(&self.raw, boundary.get(&value)); assert!(subattachments.len() > 0); @@ -215,7 +215,7 @@ impl AttachmentBuilder { } }; let body_slice = { - let offset = body.as_ptr() as usize - a.as_ptr() as usize; + let offset = (body.as_ptr() as usize).wrapping_sub(a.as_ptr() as usize); SliceBuild::new(offset, body.len()) }; builder.raw = body_slice.get(a).ltrim().into(); diff --git a/melib/src/mailbox/email/parser.rs b/melib/src/mailbox/email/parser.rs index 150092fa..9a2052e6 100644 --- a/melib/src/mailbox/email/parser.rs +++ b/melib/src/mailbox/email/parser.rs @@ -418,7 +418,7 @@ fn group(input: &[u8]) -> IResult<&[u8], Address> { return IResult::Error(e); } IResult::Done(rest, vec) => { - let size: usize = (rest.as_ptr() as usize) - ((&input[0..] as &[u8]).as_ptr() as usize); + let size: usize = (rest.as_ptr() as usize).wrapping_sub((&input[0..] as &[u8]).as_ptr() as usize); return IResult::Done( rest, Address::Group(GroupAddress {