summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-03-03 00:07:06 +0100
committerJan Ekström <jeebjp@gmail.com>2018-03-03 02:38:01 +0200
commitf706076dd1ca48327378ea6c35e41fe905049bc5 (patch)
tree9b44944c2898690d5f8674bd5266ad48a1c615bc
parent0200a71e2f40b26cbd9bd956089857205e72c6e5 (diff)
downloadmpv-f706076dd1ca48327378ea6c35e41fe905049bc5.tar.bz2
mpv-f706076dd1ca48327378ea6c35e41fe905049bc5.tar.xz
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.
-rw-r--r--player/loadfile.c2
1 files changed, 1 insertions, 1 deletions
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;