Index: base/memory/shared_memory_win.cc |
diff --git a/base/memory/shared_memory_win.cc b/base/memory/shared_memory_win.cc |
index 42e0b046b96e5818d3cfe05546e32a8857a91012..8807368570da4c95d565d8baa0719bade968df9e 100644 |
--- a/base/memory/shared_memory_win.cc |
+++ b/base/memory/shared_memory_win.cc |
@@ -94,6 +94,18 @@ size_t SharedMemory::GetHandleLimit() { |
return static_cast<size_t>(1 << 23); |
} |
+// static |
+scoped_ptr<SharedMemory> SharedMemory::NewAnonymousReadOnly( |
+ StringPiece contents) { |
+ SharedMemory writable_handle; |
+ writable_handle.CreateAndMapAnonymous(contents.size()); |
+ memcpy(writable_handle.memory(), contents.data(), contents.size()); |
+ writable_handle.Unmap(); |
+ |
+ return make_scoped_ptr(new SharedMemory( |
+ writable_handle.handle(), /*read_only=*/true, GetCurrentProcess())); |
+} |
+ |
bool SharedMemory::CreateAndMapAnonymous(size_t size) { |
return CreateAnonymous(size) && Map(size); |
} |