Bug 1453127 - Do not use iterators in MediaStreamTrack when removing listeners. r=pehrsons a=lizzard

--HG--
extra : source : 6b3aaee40f7507e240da08d6e073cff3c53971f4
extra : intermediate-source : 59e50af7afe19f827dd687ea097d5ba551ab0b1d
This commit is contained in:
Bryce Van Dyk 2018-04-18 15:30:57 -04:00 • committed by Roy Tam
commit f2565dab54

View file

@ -165,11 +165,15 @@ MediaStreamTrack::Destroy()
mPrincipalHandleListener->Forget(); mPrincipalHandleListener->Forget();
mPrincipalHandleListener = nullptr; mPrincipalHandleListener = nullptr;
} }
for (auto l : mTrackListeners) { // Remove all listeners -- avoid iterating over the list we're removing from
RemoveListener(l); const nsTArray<RefPtr<MediaStreamTrackListener>> trackListeners(mTrackListeners);
for (auto listener : trackListeners) {
RemoveListener(listener);
} }
for (auto l : mDirectTrackListeners) { // Do the same as above for direct listeners
RemoveDirectListener(l); const nsTArray<RefPtr<DirectMediaStreamTrackListener>> directTrackListeners(mDirectTrackListeners);
for (auto listener : directTrackListeners) {
RemoveDirectListener(listener);
} }
} }