diff --git a/ethexe/malachite/core/src/streaming.rs b/ethexe/malachite/core/src/streaming.rs index 7f9d3c37778..74f6d92b012 100644 --- a/ethexe/malachite/core/src/streaming.rs +++ b/ethexe/malachite/core/src/streaming.rs @@ -98,7 +98,7 @@ impl StreamState { } if msg.is_fin() { self.fin_received = true; - self.total_messages = msg.sequence as usize + 1; + self.total_messages = (msg.sequence as usize).saturating_add(1); } self.buffer.push(msg); if self.is_done() { @@ -352,4 +352,12 @@ mod tests { map.streams.len(), ); } + + #[test] + fn fin_at_u64_max_sequence_does_not_panic() { + let mut map = PartStreamsMap::new(); + let p = peer_id(13); + let s = sid(0xDEADBEEF); + let _ = map.insert(p, fin_msg(s, u64::MAX)); + } }