summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
authoruau <uau@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-06-14 14:05:59 +0000
committeruau <uau@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-06-14 14:05:59 +0000
commit7022f65d0cc4edcb001a39f8836940f8a34ea029 (patch)
tree5f5e972af60e046298ee32112573cf64409bc8df /libmpdemux/demux_mkv.c
parenta4850512c0942fe92a2cb9f9bc3525d5e0d8e2b5 (diff)
downloadmpv-7022f65d0cc4edcb001a39f8836940f8a34ea029.tar.bz2
mpv-7022f65d0cc4edcb001a39f8836940f8a34ea029.tar.xz
Change free_sh_audio() to take demuxer and stream id as parameters
(same as new_sh_audio()) instead of sh_audio_t *, use those to remove the pointer from demuxer->a_streams[] before freeing it. Some demuxers use free_sh_audio() to undo the creation of an already-allocated audio stream in case of error. These uses were unsafe since free_sh_audio() freed the data structure but left the pointer in demuxer->a_streams[], leading to double free later in free_demuxer() (and perhaps use of the freed stream before that, I didn't check). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18711 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index bc9bfa2731..a9cd8be4aa 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -1837,7 +1837,7 @@ demux_mkv_open_audio (demuxer_t *demuxer, mkv_track_t *track)
mp_msg (MSGT_DEMUX, MSGL_WARN, "[mkv] Unknown/unsupported audio "
"codec ID '%s' for track %u or missing/faulty private "
"codec data.\n", track->codec_id, track->tnum);
- free_sh_audio (sh_a);
+ free_sh_audio(demuxer, track->tnum);
return 1;
}
}
@@ -2061,7 +2061,7 @@ demux_mkv_open_audio (demuxer_t *demuxer, mkv_track_t *track)
}
else if (!track->ms_compat || (track->private_size < sizeof(WAVEFORMATEX)))
{
- free_sh_audio (sh_a);
+ free_sh_audio(demuxer, track->tnum);
return 1;
}