Mercurial > mplayer.hg
comparison libmpdemux/stheader.h @ 18708:9e2b300db17b
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).
author | uau |
---|---|
date | Wed, 14 Jun 2006 14:05:59 +0000 |
parents | 87161f96fa66 |
children | d9a75b26da6c |
comparison
equal
deleted
inserted
replaced
18707:60a60dbf7a88 | 18708:9e2b300db17b |
---|---|
87 } sh_video_t; | 87 } sh_video_t; |
88 | 88 |
89 // demuxer.c: | 89 // demuxer.c: |
90 sh_audio_t* new_sh_audio(demuxer_t *demuxer,int id); | 90 sh_audio_t* new_sh_audio(demuxer_t *demuxer,int id); |
91 sh_video_t* new_sh_video(demuxer_t *demuxer,int id); | 91 sh_video_t* new_sh_video(demuxer_t *demuxer,int id); |
92 void free_sh_audio(sh_audio_t *sh); | 92 void free_sh_audio(demuxer_t *demuxer, int id); |
93 void free_sh_video(sh_video_t *sh); | 93 void free_sh_video(sh_video_t *sh); |
94 | 94 |
95 // video.c: | 95 // video.c: |
96 int video_read_properties(sh_video_t *sh_video); | 96 int video_read_properties(sh_video_t *sh_video); |
97 int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char** start,int force_fps); | 97 int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char** start,int force_fps); |