From: dan Date: Thu, 27 Oct 2022 19:06:42 +0000 (+0000) Subject: Fix another problem to do with recovering from in-memory databases. X-Git-Tag: version-3.40.0~73 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=10f5525410201e06a262c93433cf629f30ea1e8a;p=thirdparty%2Fsqlite.git Fix another problem to do with recovering from in-memory databases. FossilOrigin-Name: 5a7bfd4a217cd80882a1827674b479cdc547419a785e06e0ee82cb8cfca42701 --- diff --git a/ext/recover/sqlite3recover.c b/ext/recover/sqlite3recover.c index 41aad84245..7e284931a3 100644 --- a/ext/recover/sqlite3recover.c +++ b/ext/recover/sqlite3recover.c @@ -2497,7 +2497,7 @@ static void recoverInstallWrapper(sqlite3_recover *p){ recoverAssertMutexHeld(); sqlite3_file_control(p->dbIn, p->zDb, SQLITE_FCNTL_FILE_POINTER, (void*)&pFd); assert( pFd==0 || pFd->pMethods!=&recover_methods ); - if( pFd ){ + if( pFd && pFd->pMethods ){ int iVersion = 1 + (pFd->pMethods->iVersion>1 && pFd->pMethods->xShmMap!=0); recover_g.pMethods = pFd->pMethods; recover_g.p = p; @@ -2515,7 +2515,7 @@ static void recoverUninstallWrapper(sqlite3_recover *p){ recoverAssertMutexHeld(); sqlite3_file *pFd = 0; sqlite3_file_control(p->dbIn, p->zDb,SQLITE_FCNTL_FILE_POINTER,(void*)&pFd); - if( pFd ){ + if( pFd && pFd->pMethods ){ pFd->pMethods = recover_g.pMethods; recover_g.pMethods = 0; recover_g.p = 0; diff --git a/manifest b/manifest index 4540f2893c..7d4485263d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Ensure\sthat\sthe\sVFS\swrapper\sin\sthe\srecover\sextension\sdoes\snot\sattempt\sto\sinvoke\sundefined\smethods\son\sthe\sunderlying\sVFS. -D 2022-10-27T19:02:51.201 +C Fix\sanother\sproblem\sto\sdo\swith\srecovering\sfrom\sin-memory\sdatabases. +D 2022-10-27T19:06:42.311 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -398,7 +398,7 @@ F ext/recover/recoverpgsz.test 93e970eab05e4e89f8fd6b1bd23f9ec137ea09857e66ba0d4 F ext/recover/recoverrowid.test 1694a1a5526d825f71279f3d02ab02a1ee4c5265de18858bf54cb8ec54487ac8 F ext/recover/recoverslowidx.test f356bb9fba7ffd6fc50e045e419464f0129ac6e24decf6e919584f79c3493727 F ext/recover/recoversql.test f9872ff2114e13ffd8ee31e1de06919f62b9b48bc080191b5bd076d10becb60f -F ext/recover/sqlite3recover.c 5f7ace27d8e69d350a20171f13ebe964f090906ff0a74eb0fb4582c391c44dc5 +F ext/recover/sqlite3recover.c b8f4b3a58bc81f2d31ca4645a7dddfc4dedd9a06e66471f827932cc63edc2bc0 F ext/recover/sqlite3recover.h f698ccc94bd4da38761035415ad08c4549a408491ff9fd5f52d34d2214f64e36 F ext/recover/test_recover.c 61ec931e47abca6b2210f46239cafd9f3060741605e3d3c45a7c7a53f63dd957 F ext/repair/README.md 92f5e8aae749a4dae14f02eea8e1bb42d4db2b6ce5e83dbcdd6b1446997e0c15 @@ -2052,8 +2052,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 44c0874c33e76ce708022e5c38c74f75565a8cea9f4c5b067cc0a54079aeee20 -R 2a9f1c8744e1f06e55a5b9eca0aedd6c +P 347c575108bc8112613a02afda1247bdbed24c15def7eb412d0b27aba047715b +R 8cb4c38216254872472236af72461bb8 U dan -Z 2859b7a2df62a00c975fd7e3b56edbdb +Z 43cd6d4bbed8e35cf002f980c0324c18 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 10ccc61b4a..f0b1156329 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -347c575108bc8112613a02afda1247bdbed24c15def7eb412d0b27aba047715b \ No newline at end of file +5a7bfd4a217cd80882a1827674b479cdc547419a785e06e0ee82cb8cfca42701 \ No newline at end of file