comparison libmpdemux/demux_ogg.c @ 21500:e7e7f397f991

Fix memleaks caused by missing vorbis/theora_info/comment_clear calls. Code still seems wrong to me for multiple audio tracks, since there is only one vorbis comment/info entry for the demuxer, not one per track?
author reimar
date Wed, 06 Dec 2006 10:46:50 +0000
parents 493b34d15885
children 63b3fbf90106
comparison
equal deleted inserted replaced
21499:2e6ebc42fa9a 21500:e7e7f397f991
992 (int)inf.version_minor, 992 (int)inf.version_minor,
993 (int)inf.version_subminor, 993 (int)inf.version_subminor,
994 n_video - 1); 994 n_video - 1);
995 if( mp_msg_test(MSGT_HEADER,MSGL_V) ) print_video_header(sh_v->bih,MSGL_V); 995 if( mp_msg_test(MSGT_HEADER,MSGL_V) ) print_video_header(sh_v->bih,MSGL_V);
996 } 996 }
997 theora_comment_clear(&cc);
998 theora_info_clear(&inf);
997 # endif /* HAVE_OGGTHEORA */ 999 # endif /* HAVE_OGGTHEORA */
998 } else if (pack.bytes >= 4 && !strncmp (&pack.packet[0], "fLaC", 4)) { 1000 } else if (pack.bytes >= 4 && !strncmp (&pack.packet[0], "fLaC", 4)) {
999 sh_a = new_sh_audio_aid(demuxer,ogg_d->num_sub, n_audio); 1001 sh_a = new_sh_audio_aid(demuxer,ogg_d->num_sub, n_audio);
1000 sh_a->format = mmioFOURCC('f', 'L', 'a', 'C'); 1002 sh_a->format = mmioFOURCC('f', 'L', 'a', 'C');
1001 ogg_d->subs[ogg_d->num_sub].id = n_audio; 1003 ogg_d->subs[ogg_d->num_sub].id = n_audio;
1619 if (ogg_d->text_langs) { 1621 if (ogg_d->text_langs) {
1620 for (i = 0; i < ogg_d->n_text; i++) 1622 for (i = 0; i < ogg_d->n_text; i++)
1621 if (ogg_d->text_langs[i]) free(ogg_d->text_langs[i]); 1623 if (ogg_d->text_langs[i]) free(ogg_d->text_langs[i]);
1622 free(ogg_d->text_langs); 1624 free(ogg_d->text_langs);
1623 } 1625 }
1626 vorbis_info_clear(&ogg_d->vi);
1627 vorbis_comment_clear(&ogg_d->vc);
1624 free(ogg_d); 1628 free(ogg_d);
1625 } 1629 }
1626 1630
1627 static int demux_ogg_control(demuxer_t *demuxer,int cmd, void *arg){ 1631 static int demux_ogg_control(demuxer_t *demuxer,int cmd, void *arg){
1628 ogg_demuxer_t* ogg_d = demuxer->priv; 1632 ogg_demuxer_t* ogg_d = demuxer->priv;