comparison libmpdemux/demuxer.c @ 23592:76bed8202233

Fix memleak due to not freeing demuxer->s_streams
author reimar
date Sat, 23 Jun 2007 17:39:27 +0000
parents ba9e664dbbaa
children ecbb54f8d299
comparison
equal deleted inserted replaced
23591:7acf8cc042b0 23592:76bed8202233
224 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SUBTITLE_ID=%d\n", sid); 224 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SUBTITLE_ID=%d\n", sid);
225 } 225 }
226 return demuxer->s_streams[id]; 226 return demuxer->s_streams[id];
227 } 227 }
228 228
229 void free_sh_sub(sh_sub_t *sh) {
230 mp_msg(MSGT_DEMUXER, MSGL_DBG2, "DEMUXER: freeing sh_sub at %p\n", sh);
231 free(sh);
232 }
233
229 sh_audio_t* new_sh_audio_aid(demuxer_t *demuxer,int id,int aid){ 234 sh_audio_t* new_sh_audio_aid(demuxer_t *demuxer,int id,int aid){
230 if(id > MAX_A_STREAMS-1 || id < 0) 235 if(id > MAX_A_STREAMS-1 || id < 0)
231 { 236 {
232 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested audio stream id overflow (%d > %d)\n", 237 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested audio stream id overflow (%d > %d)\n",
233 id, MAX_A_STREAMS); 238 id, MAX_A_STREAMS);
294 // free streams: 299 // free streams:
295 for(i = 0; i < MAX_A_STREAMS; i++) 300 for(i = 0; i < MAX_A_STREAMS; i++)
296 if(demuxer->a_streams[i]) free_sh_audio(demuxer, i); 301 if(demuxer->a_streams[i]) free_sh_audio(demuxer, i);
297 for(i = 0; i < MAX_V_STREAMS; i++) 302 for(i = 0; i < MAX_V_STREAMS; i++)
298 if(demuxer->v_streams[i]) free_sh_video(demuxer->v_streams[i]); 303 if(demuxer->v_streams[i]) free_sh_video(demuxer->v_streams[i]);
304 for(i = 0; i < MAX_S_STREAMS; i++)
305 if(demuxer->s_streams[i]) free_sh_sub(demuxer->s_streams[i]);
299 // free demuxers: 306 // free demuxers:
300 free_demuxer_stream(demuxer->audio); 307 free_demuxer_stream(demuxer->audio);
301 free_demuxer_stream(demuxer->video); 308 free_demuxer_stream(demuxer->video);
302 free_demuxer_stream(demuxer->sub); 309 free_demuxer_stream(demuxer->sub);
303 skip_streamfree: 310 skip_streamfree: