Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(390)

Side by Side Diff: third_party/sqlite/patches/0012-Allow-read-only-memory-mapping.patch

Issue 1610963002: Import SQLite 3.10.2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 From 0b346776e7a4d775932a18970801fa48d7a5ce11 Mon Sep 17 00:00:00 2001
2 From: Scott Hess <shess@chromium.org>
3 Date: Wed, 5 Aug 2015 16:44:32 -0700
4 Subject: [PATCH 12/12] Allow read-only memory mapping.
5
6 In memory-mapped I/O mode, SQLite writes pages by using memcpy() from
7 the staging memory into the underlying memory-mapped file. This allows
8 anyone in the process to also write into that space. Modify SQLite to
9 map things read-only.
10
11 TODO: Upstream.
12
13 BUG=489784
14 ---
15 third_party/sqlite/src/src/os_unix.c | 4 ++++
16 third_party/sqlite/src/src/os_win.c | 4 ++++
17 2 files changed, 8 insertions(+)
18
19 diff --git a/third_party/sqlite/src/src/os_unix.c b/third_party/sqlite/src/src/o s_unix.c
20 index 75b71dc..eaa97cf 100644
21 --- a/third_party/sqlite/src/src/os_unix.c
22 +++ b/third_party/sqlite/src/src/os_unix.c
23 @@ -3341,6 +3341,7 @@ static int unixWrite(
24 }
25 #endif
26
27 +#if !SQLITE_MMAP_READ_ONLY
28 #if SQLITE_MAX_MMAP_SIZE>0
29 /* Deal with as much of this write request as possible by transfering
30 ** data from the memory mapping using memcpy(). */
31 @@ -3357,6 +3358,7 @@ static int unixWrite(
32 }
33 }
34 #endif
35 +#endif
36
37 while( amt>0 && (wrote = seekAndWrite(pFile, offset, pBuf, amt))>0 ){
38 amt -= wrote;
39 @@ -4743,7 +4745,9 @@ static void unixRemapfile(
40 assert( pFd->mmapSizeActual>=pFd->mmapSize );
41 assert( MAP_FAILED!=0 );
42
43 +#if !SQLITE_MMAP_READ_ONLY
44 if( (pFd->ctrlFlags & UNIXFILE_RDONLY)==0 ) flags |= PROT_WRITE;
45 +#endif
46
47 if( pOrig ){
48 #if HAVE_MREMAP
49 diff --git a/third_party/sqlite/src/src/os_win.c b/third_party/sqlite/src/src/os _win.c
50 index 9320bfc..2e757f8 100644
51 --- a/third_party/sqlite/src/src/os_win.c
52 +++ b/third_party/sqlite/src/src/os_win.c
53 @@ -2558,6 +2558,7 @@ static int winWrite(
54 OSTRACE(("WRITE file=%p, buffer=%p, amount=%d, offset=%lld, lock=%d\n",
55 pFile->h, pBuf, amt, offset, pFile->locktype));
56
57 +#if !SQLITE_MMAP_READ_ONLY
58 #if SQLITE_MAX_MMAP_SIZE>0
59 /* Deal with as much of this write request as possible by transfering
60 ** data from the memory mapping using memcpy(). */
61 @@ -2575,6 +2576,7 @@ static int winWrite(
62 }
63 }
64 #endif
65 +#endif
66
67 #if SQLITE_OS_WINCE
68 rc = winSeekFile(pFile, offset);
69 @@ -4021,10 +4023,12 @@ static int winMapfile(winFile *pFd, sqlite3_int64 nByte) {
70 DWORD flags = FILE_MAP_READ;
71
72 winUnmapfile(pFd);
73 +#if !SQLITE_MMAP_READ_ONLY
74 if( (pFd->ctrlFlags & WINFILE_RDONLY)==0 ){
75 protect = PAGE_READWRITE;
76 flags |= FILE_MAP_WRITE;
77 }
78 +#endif
79 #if SQLITE_OS_WINRT
80 pFd->hMap = osCreateFileMappingFromApp(pFd->h, NULL, protect, nMap, NULL);
81 #elif defined(SQLITE_WIN32_HAS_WIDE)
82 --
83 2.4.5
84
OLDNEW
« no previous file with comments | « third_party/sqlite/patches/0011-backport-Fix-collation-dequoting.patch ('k') | third_party/sqlite/sqlite.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698