Two crash issues fixed:

1. Freeing of unallocated memory when tv driver fails to initialize itself.
2. Call to tv driver's tv_uninit more than once.



git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21855 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
voroshil 2007-01-08 05:55:46 +00:00
parent 981c6999ea
commit 3f102a3f59
1 changed files with 9 additions and 1 deletions

View File

@ -480,6 +480,7 @@ static demuxer_t* demux_open_tv(demuxer_t *demuxer)
sh_audio_t *sh_audio = NULL;
tvi_functions_t *funcs;
demuxer->priv=NULL;
if(!(tvh=tv_begin())) return NULL;
if (!tv_init(tvh)) return NULL;
if (!open_tv(tvh)){
@ -625,7 +626,9 @@ no_audio:
static void demux_close_tv(demuxer_t *demuxer)
{
tvi_handle_t *tvh=(tvi_handle_t*)(demuxer->priv);
if (!tvh) return;
tvh->functions->uninit(tvh->priv);
demuxer->priv=NULL;
}
/* ================== STREAM_TV ===================== */
@ -668,7 +671,12 @@ int tv_init(tvi_handle_t *tvh)
int tv_uninit(tvi_handle_t *tvh)
{
return(tvh->functions->uninit(tvh->priv));
int res;
if(!tvh) return 1;
if (!tvh->priv) return 1;
res=tvh->functions->uninit(tvh->priv);
if(res) tvh->priv=NULL;
return res;
}
/* utilities for mplayer (not mencoder!!) */