| Index: third_party/sqlite/webdb.patch
|
| diff --git a/third_party/sqlite/webdb.patch b/third_party/sqlite/webdb.patch
|
| deleted file mode 100644
|
| index 6a4e934f46561fb50e20e4a0b1146b53453d1155..0000000000000000000000000000000000000000
|
| --- a/third_party/sqlite/webdb.patch
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -The WebDatabase implementation in the renderer users a custom vfs to
|
| -broker file open and other requests. This modifies the built-in vfs
|
| -implementation to let that code share much of the implementation
|
| -details.
|
| -
|
| -diff --git src/os_unix.c src/os_unix.c
|
| -index ef04a72..e5e1509 100644
|
| ---- src/os_unix.c
|
| -+++ src/os_unix.c
|
| -@@ -3496,9 +3496,16 @@ typedef const sqlite3_io_methods *(*finder_type)(const char*,unixFile*);
|
| - */
|
| -
|
| - /*
|
| -+** Initializes a unixFile structure with zeros.
|
| -+*/
|
| -+void initUnixFile(sqlite3_file* file) {
|
| -+ memset(file, 0, sizeof(unixFile));
|
| -+}
|
| -+
|
| -+/*
|
| - ** Initialize the contents of the unixFile structure pointed to by pId.
|
| - */
|
| --static int fillInUnixFile(
|
| -+int fillInUnixFile(
|
| - sqlite3_vfs *pVfs, /* Pointer to vfs object */
|
| - int h, /* Open file descriptor of file being opened */
|
| - int dirfd, /* Directory file descriptor */
|
| -@@ -3812,6 +3819,73 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){
|
| - }
|
| -
|
| - /*
|
| -+** Initializes a unixFile structure with zeros.
|
| -+*/
|
| -+void chromium_sqlite3_initialize_unix_sqlite3_file(sqlite3_file* file) {
|
| -+ memset(file, 0, sizeof(unixFile));
|
| -+}
|
| -+
|
| -+int chromium_sqlite3_fill_in_unix_sqlite3_file(sqlite3_vfs* vfs,
|
| -+ int fd,
|
| -+ int dirfd,
|
| -+ sqlite3_file* file,
|
| -+ const char* fileName,
|
| -+ int noLock,
|
| -+ int isDelete) {
|
| -+ return fillInUnixFile(vfs, fd, dirfd, file, fileName, noLock, isDelete, 0);
|
| -+}
|
| -+
|
| -+/*
|
| -+** Search for an unused file descriptor that was opened on the database file.
|
| -+** If a suitable file descriptor if found, then it is stored in *fd; otherwise,
|
| -+** *fd is not modified.
|
| -+**
|
| -+** If a reusable file descriptor is not found, and a new UnixUnusedFd cannot
|
| -+** be allocated, SQLITE_NOMEM is returned. Otherwise, SQLITE_OK is returned.
|
| -+*/
|
| -+int chromium_sqlite3_get_reusable_file_handle(sqlite3_file* file,
|
| -+ const char* fileName,
|
| -+ int flags,
|
| -+ int* fd) {
|
| -+ unixFile* unixSQLite3File = (unixFile*)file;
|
| -+ int fileType = flags & 0xFFFFFF00;
|
| -+ if (fileType == SQLITE_OPEN_MAIN_DB) {
|
| -+ UnixUnusedFd *unusedFd = findReusableFd(fileName, flags);
|
| -+ if (unusedFd) {
|
| -+ *fd = unusedFd->fd;
|
| -+ } else {
|
| -+ unusedFd = sqlite3_malloc(sizeof(*unusedFd));
|
| -+ if (!unusedFd) {
|
| -+ return SQLITE_NOMEM;
|
| -+ }
|
| -+ }
|
| -+ unixSQLite3File->pUnused = unusedFd;
|
| -+ }
|
| -+ return SQLITE_OK;
|
| -+}
|
| -+
|
| -+/*
|
| -+** Marks 'fd' as the unused file descriptor for 'pFile'.
|
| -+*/
|
| -+void chromium_sqlite3_update_reusable_file_handle(sqlite3_file* file,
|
| -+ int fd,
|
| -+ int flags) {
|
| -+ unixFile* unixSQLite3File = (unixFile*)file;
|
| -+ if (unixSQLite3File->pUnused) {
|
| -+ unixSQLite3File->pUnused->fd = fd;
|
| -+ unixSQLite3File->pUnused->flags = flags;
|
| -+ }
|
| -+}
|
| -+
|
| -+/*
|
| -+** Destroys pFile's field that keeps track of the unused file descriptor.
|
| -+*/
|
| -+void chromium_sqlite3_destroy_reusable_file_handle(sqlite3_file* file) {
|
| -+ unixFile* unixSQLite3File = (unixFile*)file;
|
| -+ sqlite3_free(unixSQLite3File->pUnused);
|
| -+}
|
| -+
|
| -+/*
|
| - ** Open the file zPath.
|
| - **
|
| - ** Previously, the SQLite OS layer used three functions in place of this
|
| -@@ -3893,20 +3967,13 @@ static int unixOpen(
|
| - || eType==SQLITE_OPEN_TRANSIENT_DB
|
| - );
|
| -
|
| -- memset(p, 0, sizeof(unixFile));
|
| -+ chromium_sqlite3_initialize_unix_sqlite3_file(pFile);
|
| -
|
| - if( eType==SQLITE_OPEN_MAIN_DB ){
|
| -- UnixUnusedFd *pUnused;
|
| -- pUnused = findReusableFd(zName, flags);
|
| -- if( pUnused ){
|
| -- fd = pUnused->fd;
|
| -- }else{
|
| -- pUnused = sqlite3_malloc(sizeof(*pUnused));
|
| -- if( !pUnused ){
|
| -- return SQLITE_NOMEM;
|
| -- }
|
| -+ rc = chromium_sqlite3_get_reusable_file_handle(pFile, zName, flags, &fd);
|
| -+ if( rc!=SQLITE_OK ){
|
| -+ return rc;
|
| - }
|
| -- p->pUnused = pUnused;
|
| - }else if( !zName ){
|
| - /* If zName is NULL, the upper layer is requesting a temp file. */
|
| - assert(isDelete && !isOpenDirectory);
|
| -@@ -3949,10 +4016,7 @@ static int unixOpen(
|
| - *pOutFlags = flags;
|
| - }
|
| -
|
| -- if( p->pUnused ){
|
| -- p->pUnused->fd = fd;
|
| -- p->pUnused->flags = flags;
|
| -- }
|
| -+ chromium_sqlite3_update_reusable_file_handle(pFile, fd, flags);
|
| -
|
| - if( isDelete ){
|
| - #if OS_VXWORKS
|
| -@@ -4028,7 +4092,7 @@ static int unixOpen(
|
| - rc = fillInUnixFile(pVfs, fd, dirfd, pFile, zPath, noLock, isDelete);
|
| - open_finished:
|
| - if( rc!=SQLITE_OK ){
|
| -- sqlite3_free(p->pUnused);
|
| -+ chromium_sqlite3_destroy_reusable_file_handle(pFile);
|
| - }
|
| - return rc;
|
| - }
|
| -diff --git src/os_win.c src/os_win.c
|
| -index bc03a4b..06539d7 100644
|
| ---- src/os_win.c
|
| -+++ src/os_win.c
|
| -@@ -1890,4 +1890,11 @@ int sqlite3_os_end(void){
|
| - return SQLITE_OK;
|
| - }
|
| -
|
| -+void chromium_sqlite3_initialize_win_sqlite3_file(sqlite3_file* file, HANDLE handle) {
|
| -+ winFile* winSQLite3File = (winFile*)file;
|
| -+ memset(file, 0, sizeof(*file));
|
| -+ winSQLite3File->pMethod = &winIoMethod;
|
| -+ winSQLite3File->h = handle;
|
| -+}
|
| -+
|
| - #endif /* SQLITE_OS_WIN */
|
|
|