block_t *p_block = NULL;
int i_flushing = 0;
- while( pp_block && *pp_block )
+ if( pp_block && *pp_block )
{
p_block = *pp_block;
- *pp_block = p_block->p_next;
- p_block->p_next = NULL;
+ *pp_block = NULL;
- if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
- {
- /* silently discard corruption sentinels,
- * synchronizer will then discard affected data units.
- * do not produce an EOS data unit as this is very
- * disruptive to the stream (and may make a larger error). */
- block_Release( p_block );
- continue;
- }
if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
{
/* pre-emptively insert an EOS at a discontinuity, protects
* duplicates get discarded in forming encapsulation unit */
}
}
- block_BytestreamPush( &p_sys->bytestream, p_block );
+ else if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
+ {
+ /* silently discard corruption sentinels,
+ * synchronizer will then discard affected data units.
+ * do not produce an EOS data unit as this is very
+ * disruptive to the stream (and may make a larger error). */
+ block_Release( p_block );
+ p_block = NULL;
+ }
+ if( p_block )
+ block_BytestreamPush( &p_sys->bytestream, p_block );
}
/* form as many encapsulation units as possible, give up
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys = p_dec->p_sys;
- if( !p_sys )
- return;
-
block_BytestreamRelease( &p_sys->bytestream );
if( p_sys->p_outqueue )
block_ChainRelease( p_sys->p_outqueue );