diff --git a/modules/video_coding/packet_buffer.cc b/modules/video_coding/packet_buffer.cc index 9d7b6e550c..df53e81685 100644 --- a/modules/video_coding/packet_buffer.cc +++ b/modules/video_coding/packet_buffer.cc @@ -129,8 +129,7 @@ PacketBuffer::InsertResult PacketBuffer::InsertPacket( void PacketBuffer::ClearTo(uint16_t seq_num) { // We have already cleared past this sequence number, no need to do anything. - if (is_cleared_to_first_seq_num_ && - AheadOf(first_seq_num_, seq_num)) { + if (AheadOf(first_seq_num_, seq_num)) { return; } diff --git a/modules/video_coding/packet_buffer_unittest.cc b/modules/video_coding/packet_buffer_unittest.cc index 925d8f2876..6c05d09277 100644 --- a/modules/video_coding/packet_buffer_unittest.cc +++ b/modules/video_coding/packet_buffer_unittest.cc @@ -839,6 +839,13 @@ TEST_F(PacketBufferH264FrameGap, SizeIs(2)); } +TEST_F(PacketBufferH264FrameGap, DoesntCrashWhenTryToClearBefore1stPacket) { + // Test scenario copied from the https://issues.chromium.org/370689424 + InsertH264(41087, kKeyFrame, kNotFirst, kNotLast, 123, 0, 0, false); + packet_buffer_.ClearTo(30896); + InsertH264(32896, kKeyFrame, kFirst, kLast, 123, 0, 0, false); +} + } // namespace } // namespace video_coding } // namespace webrtc