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,