diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2010-12-19 02:11:35 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2010-12-19 02:11:35 +0000 |
| commit | 6b1fcc67c221a021d073394566f4edd58103d661 (patch) | |
| tree | f76c8e056d4677dd32a59ddf21878e2b56016e59 /apps/plugins | |
| parent | b985b4c54bba1482e9517a0a384766f587d59a47 (diff) | |
| download | rockbox-6b1fcc67c221a021d073394566f4edd58103d661.zip rockbox-6b1fcc67c221a021d073394566f4edd58103d661.tar.gz rockbox-6b1fcc67c221a021d073394566f4edd58103d661.tar.bz2 rockbox-6b1fcc67c221a021d073394566f4edd58103d661.tar.xz | |
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
Diffstat (limited to 'apps/plugins')
| -rw-r--r-- | apps/plugins/mpegplayer/mpeg_parser.c | 2 | ||||
| -rw-r--r-- | 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 5821bd5..1be11a4 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 2eed3d3..b88c6d7 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; |