Media Session: Active participating elements can change while being iterated
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 15 Jun 2015 18:55:39 +0000 (18:55 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 15 Jun 2015 18:55:39 +0000 (18:55 +0000)
https://bugs.webkit.org/show_bug.cgi?id=145978

Patch by Matt Rajca <mrajca@apple.com> on 2015-06-15
Reviewed by Alex Christensen.

* Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::togglePlayback): Iterate through a copy of m_activeParticipatingElements since its contents
  can be modified in the loop.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@185560 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/Modules/mediasession/MediaSession.cpp

index aab0266..bc71871 100644 (file)
@@ -1,3 +1,14 @@
+2015-06-15  Matt Rajca  <mrajca@apple.com>
+
+        Media Session: Active participating elements can change while being iterated 
+        https://bugs.webkit.org/show_bug.cgi?id=145978
+
+        Reviewed by Alex Christensen.
+
+        * Modules/mediasession/MediaSession.cpp:
+        (WebCore::MediaSession::togglePlayback): Iterate through a copy of m_activeParticipatingElements since its contents
+          can be modified in the loop.
+
 2015-06-15  Chris Fleizach  <cfleizach@apple.com>
 
         AX: no accessibility support for details element
index ff305f4..4298b26 100644 (file)
@@ -94,7 +94,9 @@ bool MediaSession::invoke()
 
 void MediaSession::togglePlayback()
 {
-    for (auto* element : m_activeParticipatingElements) {
+    HashSet<HTMLMediaElement*> activeParticipatingElementsCopy = m_activeParticipatingElements;
+
+    for (auto* element : activeParticipatingElementsCopy) {
         if (element->paused())
             element->play();
         else