Title: [182742] trunk/Source/WebKit2
Revision
182742
Author
[email protected]
Date
2015-04-13 10:54:22 -0700 (Mon, 13 Apr 2015)

Log Message

[Content Extensions] Don't unmap shared memory while using it.
https://bugs.webkit.org/show_bug.cgi?id=143625

Reviewed by Darin Adler.

* Shared/WebCompiledContentExtension.cpp:
(WebKit::WebCompiledContentExtension::createFromCompiledContentExtensionData):
* Shared/WebCompiledContentExtensionData.h:
(WebKit::WebCompiledContentExtensionData::WebCompiledContentExtensionData):
* UIProcess/API/APIUserContentExtensionStore.cpp:
(API::createExtension):
Keep the Data object alive as long as the SharedMemory that uses it.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (182741 => 182742)


--- trunk/Source/WebKit2/ChangeLog	2015-04-13 17:50:44 UTC (rev 182741)
+++ trunk/Source/WebKit2/ChangeLog	2015-04-13 17:54:22 UTC (rev 182742)
@@ -1,3 +1,18 @@
+2015-04-10  Alex Christensen  <[email protected]>
+
+        [Content Extensions] Don't unmap shared memory while using it.
+        https://bugs.webkit.org/show_bug.cgi?id=143625
+
+        Reviewed by Darin Adler.
+
+        * Shared/WebCompiledContentExtension.cpp:
+        (WebKit::WebCompiledContentExtension::createFromCompiledContentExtensionData):
+        * Shared/WebCompiledContentExtensionData.h:
+        (WebKit::WebCompiledContentExtensionData::WebCompiledContentExtensionData):
+        * UIProcess/API/APIUserContentExtensionStore.cpp:
+        (API::createExtension):
+        Keep the Data object alive as long as the SharedMemory that uses it.
+
 2015-04-12  Darin Adler  <[email protected]>
 
         [Cocoa] Localizable strings are inconsistent and need to be regenerated

Modified: trunk/Source/WebKit2/Shared/WebCompiledContentExtension.cpp (182741 => 182742)


--- trunk/Source/WebKit2/Shared/WebCompiledContentExtension.cpp	2015-04-13 17:50:44 UTC (rev 182741)
+++ trunk/Source/WebKit2/Shared/WebCompiledContentExtension.cpp	2015-04-13 17:54:22 UTC (rev 182742)
@@ -52,12 +52,8 @@
     memcpy(static_cast<char*>(sharedMemory->data()), compilerData.actions.data(), compilerData.actions.size());
     memcpy(static_cast<char*>(sharedMemory->data()) + compilerData.actions.size(), compilerData.bytecode.data(), compilerData.bytecode.size());
 
-    WebCompiledContentExtensionData data;
-    data.data = ""
-    data.actionsOffset = 0;
-    data.actionsSize = compilerData.actions.size();
-    data.bytecodeOffset = compilerData.actions.size();
-    data.bytecodeSize = compilerData.bytecode.size();
+    NetworkCache::Data fileData; // We don't have an mmap'd file to keep alive here, so just use an empty Data object.
+    WebCompiledContentExtensionData data(WTF::move(sharedMemory), fileData, 0, compilerData.actions.size(), compilerData.actions.size(), compilerData.bytecode.size());
 
     return create(WTF::move(data));
 }

Modified: trunk/Source/WebKit2/Shared/WebCompiledContentExtensionData.h (182741 => 182742)


--- trunk/Source/WebKit2/Shared/WebCompiledContentExtensionData.h	2015-04-13 17:50:44 UTC (rev 182741)
+++ trunk/Source/WebKit2/Shared/WebCompiledContentExtensionData.h	2015-04-13 17:54:22 UTC (rev 182742)
@@ -28,6 +28,7 @@
 
 #if ENABLE(CONTENT_EXTENSIONS)
 
+#include "NetworkCacheData.h"
 #include "SharedMemory.h"
 #include <wtf/RefPtr.h>
 
@@ -44,8 +45,9 @@
     {
     }
     
-    WebCompiledContentExtensionData(RefPtr<SharedMemory> data, unsigned actionsOffset, unsigned actionsSize, unsigned bytecodeOffset, unsigned bytecodeSize)
-        : data(data)
+    WebCompiledContentExtensionData(RefPtr<SharedMemory>&& data, NetworkCache::Data fileData, unsigned actionsOffset, unsigned actionsSize, unsigned bytecodeOffset, unsigned bytecodeSize)
+        : data(WTF::move(data))
+        , fileData(fileData)
         , actionsOffset(actionsOffset)
         , actionsSize(actionsSize)
         , bytecodeOffset(bytecodeOffset)
@@ -57,6 +59,7 @@
     static bool decode(IPC::ArgumentDecoder&, WebCompiledContentExtensionData&);
 
     RefPtr<SharedMemory> data;
+    NetworkCache::Data fileData;
     unsigned actionsOffset { 0 };
     unsigned actionsSize { 0 };
     unsigned bytecodeOffset { 0 };

Modified: trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp (182741 => 182742)


--- trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp	2015-04-13 17:50:44 UTC (rev 182741)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp	2015-04-13 17:54:22 UTC (rev 182742)
@@ -235,7 +235,8 @@
 {
     auto sharedMemory = WebKit::SharedMemory::createFromVMBuffer(const_cast<uint8_t*>(fileData.data()), fileData.size());
     auto compiledContentExtensionData = WebKit::WebCompiledContentExtensionData(
-        sharedMemory,
+        WTF::move(sharedMemory),
+        fileData,
         metaData.actionsOffset,
         metaData.actionsSize,
         metaData.bytecodeOffset,
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to