From 3f102a3f59ccb0e98b53fcc29ac38c3dd0d16b89 Mon Sep 17 00:00:00 2001 From: voroshil Date: Mon, 8 Jan 2007 05:55:46 +0000 Subject: 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 --- stream/tv.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'stream/tv.c') diff --git a/stream/tv.c b/stream/tv.c index 2a95db7b76..44d16a42fe 100644 --- a/stream/tv.c +++ b/stream/tv.c @@ -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!!) */ -- cgit v1.2.3