1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-31 07:51:55 +00:00

core: fix attempt to get audio pts without audio

written_audio_pts() can be called even if no audio track is active (at
least through get_current_time() when there's no known video PTS).
This triggered a crash due to NULL dereference. Add a check to return
MP_NOPTS_VALUE if no audio track exists.

Also remove a questionable update_osd_msg() call from per-file
initialization code. The call was at a point where an audio track
might be selected but not properly initialized, possibly also causing
a crash if update_osd_msg() queries current position. I don't see any
reason why the call would have been needed; it should get called
anyway before OSD contents are actually used for the new file.
This commit is contained in:
Uoti Urpala 2012-07-17 23:18:06 +03:00
parent 2e8119be9a
commit 65b24e46a1

View File

@ -1846,6 +1846,8 @@ init_error:
static double written_audio_pts(struct MPContext *mpctx)
{
sh_audio_t *sh_audio = mpctx->sh_audio;
if (!sh_audio)
return MP_NOPTS_VALUE;
demux_stream_t *d_audio = mpctx->d_audio;
// first calculate the end pts of audio that has been output by decoder
double a_pts = sh_audio->pts;
@ -4817,10 +4819,8 @@ goto_enable_cache:
if (verbose)
opts->term_osd = 0;
// Make sure old OSD does not stay around,
// e.g. with -fixed-vo and same-resolution files
// Make sure old OSD does not stay around
clear_osd_msgs();
update_osd_msg(mpctx);
//================ SETUP AUDIO ==========================