-
- if( p_block->i_buffer > 0 )
- {
- vlc_mutex_lock( &p_sys->lock );
- /* Realloc if needed */
- if( p_sys->i_buffer + p_block->i_buffer > p_sys->i_buffer_size )
- {
- if( p_sys->i_buffer_size > 5000000 )
- {
- vlc_mutex_unlock( &p_sys->lock );
- msg_Err( s, "stream_DemuxSend: buffer size > 5000000" );
- block_Release( p_block );
- return;
- }
- /* I know, it's more than needed but that's perfect */
- p_sys->i_buffer_size += p_block->i_buffer;
- /* FIXME won't work with PEEK -> segfault */
- p_sys->p_buffer = realloc( p_sys->p_buffer, p_sys->i_buffer_size );
- msg_Dbg( s, "stream_DemuxSend: realloc to %d", p_sys->i_buffer_size );
- }
-
- /* copy data */
- memcpy( &p_sys->p_buffer[p_sys->i_buffer], p_block->p_buffer, p_block->i_buffer );
- p_sys->i_buffer += p_block->i_buffer;
-
- vlc_mutex_unlock( &p_sys->lock );
- }
-
- block_Release( p_block );