From b712412e775d8940b508d40469f9d2b33be7ee97 Mon Sep 17 00:00:00 2001 From: meh Date: Wed, 24 Jun 2015 13:34:52 +0200 Subject: [PATCH] format/context: fix the packets iterator --- src/format/context.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/format/context.rs b/src/format/context.rs index 603c876..c213899 100644 --- a/src/format/context.rs +++ b/src/format/context.rs @@ -195,15 +195,19 @@ impl<'a> Iterator for PacketIter<'a> { fn next(&mut self) -> Option<::Item> { let mut packet = Packet::empty(); - match packet.read(self.context) { - Ok(..) => unsafe { - let stream = Stream::wrap(*(*self.context.as_ptr()).streams.offset(packet.stream() as isize)); + loop { + match packet.read(self.context) { + Ok(..) => + return Some((unsafe { + Stream::wrap(*(*self.context.as_ptr()).streams.offset(packet.stream() as isize)) + }, packet)), - Some((stream, packet)) - }, + Err(Error::Eof) => + return None, - _ => - None + Err(..) => + () + } } } }