From a5c735f5d90d07cd3884c6d81547cafd91b0100e Mon Sep 17 00:00:00 2001 From: Yura Yaroshevich Date: Thu, 22 Feb 2018 13:44:27 +0300 Subject: [PATCH] Fixed observer unsubscribtion in RTCRtpReceiver. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Missing unsubscribtion caused accessing invalid pointer inside AudioRtpReceiver::OnFirstPacketReceived on short-lived RTCRtpReceiver objects. Bug: webrtc:6112 Change-Id: I5df141628e1cfd69aff59177d395c3246e1bf367 Reviewed-on: https://webrtc-review.googlesource.com/54306 Reviewed-by: Kári Helgason Commit-Queue: Kári Helgason Cr-Commit-Position: refs/heads/master@{#22157} --- sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm index 0677a9bf3f..12f3ab6f32 100644 --- a/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm +++ b/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm @@ -72,6 +72,12 @@ void RtpReceiverDelegateAdapter::OnFirstPacketReceived( self.receiverId]; } +- (void)dealloc { + if (_nativeRtpReceiver) { + _nativeRtpReceiver->SetObserver(nullptr); + } +} + - (BOOL)isEqual:(id)object { if (self == object) { return YES;