From 102c529f80c057d90d45c13e10771fcf2742e337 Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Tue, 19 Mar 2019 18:47:19 -0700 Subject: [PATCH] Fix potential use of streamer element after deletion. If ReplaceDecodeBin fails from TransitionToNext, uridecodebin_ will not be replaced with a new element. Since TransitionToNext does not check the return value, it unknowingly deletes uridecodebin_. --- src/engines/gstenginepipeline.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 680ad2ed0..deba6098b 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -1004,7 +1004,10 @@ void GstEnginePipeline::TransitionToNext() { ignore_tags_ = true; - ReplaceDecodeBin(next_url_); + if (!ReplaceDecodeBin(next_url_)) { + qLog(Error) << "ReplaceDecodeBin failed with " << next_url_; + return; + } gst_element_set_state(uridecodebin_, GST_STATE_PLAYING); MaybeLinkDecodeToAudio();