From f706076dd1ca48327378ea6c35e41fe905049bc5 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 3 Mar 2018 00:07:06 +0100 Subject: player: don't free root filter while it's still needed Sometimes, playback needs to be fully uninitialized and reinitialized without "officially" closing and reopening the playlist entry. This happens with PT_RELOAD_FILE, which is triggered by edition switching and also DVD/BD title switching. (Not really sure why it goes through so much pain for such obscure cases. All it gains is not resetting "local" options, and not signaling a reload to the client API. Whatever.) The recent filter change freed filter_root too early without recreating it, so it crashed on edition switching. Fixes #5587. --- player/loadfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'player') diff --git a/player/loadfile.c b/player/loadfile.c index fa72a079ef..b8fc854cc7 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -1420,7 +1420,6 @@ terminate_playback: uninit_demuxer(mpctx); if (!opts->gapless_audio && !mpctx->encode_lavc_ctx) uninit_audio_out(mpctx); - TA_FREEP(&mpctx->filter_root); mpctx->playback_initialized = false; @@ -1432,6 +1431,7 @@ terminate_playback: m_config_restore_backups(mpctx->mconfig); + TA_FREEP(&mpctx->filter_root); talloc_free(mpctx->filtered_tags); mpctx->filtered_tags = NULL; -- cgit v1.2.3