From 6b1fcc67c221a021d073394566f4edd58103d661 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Sun, 19 Dec 2010 02:11:35 +0000 Subject: MPEGPlayer: Fix leakage of file decriptors if file wasn't accepted by playback engine-- code is now getting tested that couldn't be before. Also reset parser in stream init when it doesn't like the file. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28853 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/mpegplayer/mpeg_parser.c | 2 ++ apps/plugins/mpegplayer/stream_mgr.c | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/plugins/mpegplayer/mpeg_parser.c b/apps/plugins/mpegplayer/mpeg_parser.c index 5821bd57ab..1be11a467b 100644 --- a/apps/plugins/mpegplayer/mpeg_parser.c +++ b/apps/plugins/mpegplayer/mpeg_parser.c @@ -1144,6 +1144,7 @@ int parser_init_stream(void) if (!init_video_info()) { /* Cannot determine video size, etc. */ + parser_init_state(); return STREAM_UNSUPPORTED; } @@ -1157,6 +1158,7 @@ int parser_init_stream(void) if (video_str.start_pts == INVALID_TIMESTAMP) { /* Must have video at least */ + parser_init_state(); return STREAM_UNSUPPORTED; } diff --git a/apps/plugins/mpegplayer/stream_mgr.c b/apps/plugins/mpegplayer/stream_mgr.c index 2eed3d355d..b88c6d70c7 100644 --- a/apps/plugins/mpegplayer/stream_mgr.c +++ b/apps/plugins/mpegplayer/stream_mgr.c @@ -592,7 +592,7 @@ static int stream_on_close(void) stream_mgr_lock(); - /* Any open file? */ + /* Any open file that was accepted for playback? */ if (stream_mgr.filename != NULL) { /* Yes - hide video */ @@ -602,12 +602,13 @@ static int stream_on_close(void) stream_on_stop(false); /* Tell parser file is finished */ parser_close_stream(); - /* Close file */ - disk_buf_close(); /* Reinitialize manager */ stream_mgr_init_state(); } + /* Let disk buffer reset itself - file might be open even if no good */ + disk_buf_close(); + stream_mgr_unlock(); return status; -- cgit v1.2.3