Title: [131975] trunk/Source/WebKit2
Revision
131975
Author
[email protected]
Date
2012-10-19 21:09:24 -0700 (Fri, 19 Oct 2012)

Log Message

Race condition in WebProcessProxy::handleGetPlugins().
<http://webkit.org/b/99903>
<rdar://problem/12541471>

Reviewed by Anders Carlsson.

Scope the Vector<PluginModuleInfo> so that all the destructors are guaranteed
to have run when sendDidGetPlugins() executes on the main thread.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::handleGetPlugins):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (131974 => 131975)


--- trunk/Source/WebKit2/ChangeLog	2012-10-20 02:51:00 UTC (rev 131974)
+++ trunk/Source/WebKit2/ChangeLog	2012-10-20 04:09:24 UTC (rev 131975)
@@ -1,3 +1,17 @@
+2012-10-19  Andreas Kling  <[email protected]>
+
+        Race condition in WebProcessProxy::handleGetPlugins().
+        <http://webkit.org/b/99903>
+        <rdar://problem/12541471>
+
+        Reviewed by Anders Carlsson.
+
+        Scope the Vector<PluginModuleInfo> so that all the destructors are guaranteed
+        to have run when sendDidGetPlugins() executes on the main thread.
+
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::handleGetPlugins):
+
 2012-10-19  Brady Eidson  <[email protected]>
 
         WebProcess should only connect to the NetworkProcess if NetworkProcess is enabled

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (131974 => 131975)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2012-10-20 02:51:00 UTC (rev 131974)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2012-10-20 04:09:24 UTC (rev 131975)
@@ -343,9 +343,11 @@
 
     OwnPtr<Vector<PluginInfo> > pluginInfos = adoptPtr(new Vector<PluginInfo>);
 
-    Vector<PluginModuleInfo> plugins = m_context->pluginInfoStore().plugins();
-    for (size_t i = 0; i < plugins.size(); ++i)
-        pluginInfos->append(plugins[i].info);
+    {
+        Vector<PluginModuleInfo> plugins = m_context->pluginInfoStore().plugins();
+        for (size_t i = 0; i < plugins.size(); ++i)
+            pluginInfos->append(plugins[i].info);
+    }
 
     // NOTE: We have to pass the PluginInfo vector to the secondary thread via a pointer as otherwise
     //       we'd end up with a deref() race on all the WTF::Strings it contains.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to