Mercurial > mplayer.hg
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; |