Commit b955f860 authored by Francois Cartegnie's avatar Francois Cartegnie

mux: avi: fix leak on format failure

parent 0eba4c32
...@@ -317,14 +317,15 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) ...@@ -317,14 +317,15 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
p_stream->p_bih = NULL; p_stream->p_bih = NULL;
p_stream->p_wf = malloc( sizeof( WAVEFORMATEX ) + WAVEFORMATEX *p_wf = malloc( sizeof( WAVEFORMATEX ) +
p_input->p_fmt->i_extra ); p_input->p_fmt->i_extra );
if( !p_stream->p_wf ) if( !p_wf )
{ {
free( p_input->p_sys ); free( p_input->p_sys );
p_input->p_sys = NULL;
return VLC_ENOMEM; return VLC_ENOMEM;
} }
#define p_wf p_stream->p_wf
p_wf->cbSize = p_input->p_fmt->i_extra; p_wf->cbSize = p_input->p_fmt->i_extra;
if( p_wf->cbSize > 0 ) if( p_wf->cbSize > 0 )
{ {
...@@ -390,9 +391,12 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) ...@@ -390,9 +391,12 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
p_wf->nSamplesPerSec * p_wf->nChannels; p_wf->nSamplesPerSec * p_wf->nChannels;
break; break;
default: default:
free( p_wf );
free( p_input->p_sys );
p_input->p_sys = NULL;
return VLC_EGENERIC; return VLC_EGENERIC;
} }
#undef p_wf p_stream->p_wf = p_wf;
break; break;
case VIDEO_ES: case VIDEO_ES:
p_stream->i_cat = VIDEO_ES; p_stream->i_cat = VIDEO_ES;
...@@ -405,14 +409,15 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) ...@@ -405,14 +409,15 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
p_sys->i_stream_video = p_sys->i_streams; p_sys->i_stream_video = p_sys->i_streams;
} }
p_stream->p_wf = NULL; p_stream->p_wf = NULL;
p_stream->p_bih = malloc( sizeof( VLC_BITMAPINFOHEADER ) + VLC_BITMAPINFOHEADER *p_bih = malloc( sizeof( VLC_BITMAPINFOHEADER ) +
p_input->p_fmt->i_extra ); p_input->p_fmt->i_extra );
if( !p_stream->p_bih ) if( !p_bih )
{ {
free( p_input->p_sys ); free( p_input->p_sys );
p_input->p_sys = NULL;
return VLC_ENOMEM; return VLC_ENOMEM;
} }
#define p_bih p_stream->p_bih
p_bih->biSize = sizeof( VLC_BITMAPINFOHEADER ) + p_bih->biSize = sizeof( VLC_BITMAPINFOHEADER ) +
p_input->p_fmt->i_extra; p_input->p_fmt->i_extra;
if( p_input->p_fmt->i_extra > 0 ) if( p_input->p_fmt->i_extra > 0 )
...@@ -439,9 +444,11 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) ...@@ -439,9 +444,11 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
p_bih->biCompression = p_input->p_fmt->i_original_fourcc ?: p_input->p_fmt->i_codec; p_bih->biCompression = p_input->p_fmt->i_original_fourcc ?: p_input->p_fmt->i_codec;
break; break;
} }
#undef p_bih p_stream->p_bih = p_bih;
break; break;
default: default:
free( p_input->p_sys );
p_input->p_sys = NULL;
return( VLC_EGENERIC ); return( VLC_EGENERIC );
} }
p_stream->i_totalsize = 0; p_stream->i_totalsize = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment