From 4ccc1c4bb6fe8f1681380bb9557a7fe1847562cd Mon Sep 17 00:00:00 2001 From: Oskar Sundbom Date: Fri, 16 Mar 2018 13:56:27 +0100 Subject: [PATCH] Don't destroy a receive stream's sink before reassigning it. Bug: chromium:820901 Change-Id: If1f2ea82172154c8645baf5fbbba3acf17ddc19b Reviewed-on: https://webrtc-review.googlesource.com/62346 Reviewed-by: Fredrik Solenberg Commit-Queue: Oskar Sundbom Cr-Commit-Position: refs/heads/master@{#22477} --- media/engine/webrtcvoiceengine.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/media/engine/webrtcvoiceengine.cc b/media/engine/webrtcvoiceengine.cc index 6cd88054b6..3a530ab28f 100644 --- a/media/engine/webrtcvoiceengine.cc +++ b/media/engine/webrtcvoiceengine.cc @@ -1181,8 +1181,10 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream { void SetRawAudioSink(std::unique_ptr sink) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); + // Need to update the stream's sink first; once raw_audio_sink_ is + // reassigned, whatever was in there before is destroyed. + stream_->SetSink(sink.get()); raw_audio_sink_ = std::move(sink); - stream_->SetSink(raw_audio_sink_.get()); } void SetOutputVolume(double volume) {