fix memleak when playing mov files

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15781 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
reimar 2005-06-20 14:16:59 +00:00
parent ef1e11d2cb
commit a3e5eab301
2 changed files with 27 additions and 0 deletions

View File

@ -500,6 +500,30 @@ skip_chunk:
return 0;
}
void demux_close_mov(demuxer_t *demuxer) {
mov_priv_t* priv = demuxer->priv;
int i;
if (!priv)
return;
for (i = 0; i < MOV_MAX_TRACKS; i++) {
mov_track_t *track = priv->tracks[i];
if (track) {
free(track->tkdata);
free(track->stdata);
free(track->stream_header);
free(track->samples);
free(track->chunks);
free(track->chunkmap);
free(track->durmap);
free(track->keyframes);
free(track->editlist);
free(track->desc);
free(track);
}
}
free(priv);
}
static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak){
mov_priv_t* priv=demuxer->priv;
// printf("lschunks (level=%d,endpos=%x)\n", level, endpos);

View File

@ -161,6 +161,7 @@ extern void demux_close_aac(demuxer_t* demuxer);
#ifdef USE_WIN32DLL
extern void demux_close_avs(demuxer_t* demuxer);
#endif
extern void demux_close_mov(demuxer_t* demuxer);
#ifdef USE_TV
@ -258,6 +259,8 @@ void free_demuxer(demuxer_t *demuxer){
case DEMUXER_TYPE_AVS:
demux_close_avs(demuxer); break;
#endif
case DEMUXER_TYPE_MOV:
demux_close_mov(demuxer); break;
}
// free streams:
for(i = 0; i < MAX_A_STREAMS; i++)