Title: [101265] trunk/Source/WebCore
Revision
101265
Author
jer.no...@apple.com
Date
2011-11-28 10:50:08 -0800 (Mon, 28 Nov 2011)

Log Message

WebAudio: AudioContext::uninitialize() can caused AudioContext deletion before deleting marked nodes.
https://bugs.webkit.org/show_bug.cgi?id=72755

Reviewed by Eric Carlson.

No new tests.

Protect AudioContext from being deleted before uninitialize() returns. Fixes an assertion in ~AudioContext() and
a potential source of leaks.

* webaudio/AudioContext.cpp:
(WebCore::AudioContext::uninitialize):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (101264 => 101265)


--- trunk/Source/WebCore/ChangeLog	2011-11-28 18:28:00 UTC (rev 101264)
+++ trunk/Source/WebCore/ChangeLog	2011-11-28 18:50:08 UTC (rev 101265)
@@ -1,3 +1,18 @@
+2011-11-28  Jer Noble  <jer.no...@apple.com>
+
+        WebAudio: AudioContext::uninitialize() can caused AudioContext deletion before deleting marked nodes.
+        https://bugs.webkit.org/show_bug.cgi?id=72755
+
+        Reviewed by Eric Carlson.
+
+        No new tests.
+
+        Protect AudioContext from being deleted before uninitialize() returns. Fixes an assertion in ~AudioContext() and 
+        a potential source of leaks.
+
+        * webaudio/AudioContext.cpp:
+        (WebCore::AudioContext::uninitialize):
+
 2011-11-28  Andreas Kling  <kl...@webkit.org>
 
         InspectorCSSAgent: Remove unused function inlineStyleElement().

Modified: trunk/Source/WebCore/webaudio/AudioContext.cpp (101264 => 101265)


--- trunk/Source/WebCore/webaudio/AudioContext.cpp	2011-11-28 18:28:00 UTC (rev 101264)
+++ trunk/Source/WebCore/webaudio/AudioContext.cpp	2011-11-28 18:50:08 UTC (rev 101265)
@@ -215,7 +215,10 @@
 {
     ASSERT(isMainThread());
 
-    if (m_isInitialized) {    
+    if (m_isInitialized) {
+        // Protect this object from being deleted before we finish uninitializing.
+        RefPtr<AudioContext> protect(this);
+
         // This stops the audio thread and all audio rendering.
         m_destinationNode->uninitialize();
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to