From: drh Date: Tue, 10 Jan 2012 16:40:50 +0000 (+0000) Subject: Check the return code from sqlite3OsFileControl() in sqlite3BtreeCopyFile() X-Git-Tag: version-3.7.10~19^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2bfe5b316c4fefcb39c74ca5dfbf7b5ae4ad905d;p=thirdparty%2Fsqlite.git Check the return code from sqlite3OsFileControl() in sqlite3BtreeCopyFile() and report any errors that it generates. FossilOrigin-Name: 7f852ac6435f1c9e25b07f816cca5ba40484579e --- diff --git a/manifest b/manifest index c828f0e8c8..460c846f40 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\sthe\sBenignMalloc()\sfrom\saround\sthe\scall\sto\sFCNTL_OVERWRITE.\s\sAdd\nnew\sones\saround\ssqlite3OsDelete().\s\sFix\san\sassert\sthat\scauses\sproblems\sfor\nthe\snx-devkit. -D 2012-01-10T00:24:59.279 +C Check\sthe\sreturn\scode\sfrom\ssqlite3OsFileControl()\sin\ssqlite3BtreeCopyFile()\nand\sreport\sany\serrors\sthat\sit\sgenerates. +D 2012-01-10T16:40:50.339 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5b4a3e12a850b021547e43daf886b25133b44c07 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -122,7 +122,7 @@ F src/alter.c ac80a0f31189f8b4a524ebf661e47e84536ee7f5 F src/analyze.c f32ff304da413851eefa562b04e61ff6cb88248b F src/attach.c 12c6957996908edc31c96d7c68d4942c2474405f F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34 -F src/backup.c 52a4450a134096a59053583af47b0f0eee12ea6c +F src/backup.c e9538bad2d4a4fcd4308f1aed7cb18a0fbc968f9 F src/bitvec.c af50f1c8c0ff54d6bdb7a80e2fceca5a93670bef F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7 F src/btree.c 378a0f39d6e25cc3f7c40db3d90ec6f0a29e7733 @@ -986,7 +986,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P 393fc78a18004c839d889de2a25ec046ad6f13fc -R 9da4d78c41dff2dd67ad0c526f0529da +P 38bc4236d5a9d9f22a525bf9308d90cd4d9ce5a4 +R c4e25307d4fb90fb68174b26289cb5de U drh -Z 57daf1f62c13fa4dbe43cebca4af9d0c +Z 18b8db42ef28aa8a6ef4ac91e374bf92 diff --git a/manifest.uuid b/manifest.uuid index 8bbd12ce5d..c57c08e83f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -38bc4236d5a9d9f22a525bf9308d90cd4d9ce5a4 \ No newline at end of file +7f852ac6435f1c9e25b07f816cca5ba40484579e \ No newline at end of file diff --git a/src/backup.c b/src/backup.c index 0e99e35b7c..aa3401897b 100644 --- a/src/backup.c +++ b/src/backup.c @@ -678,7 +678,9 @@ int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){ pFd = sqlite3PagerFile(sqlite3BtreePager(pTo)); if( pFd->pMethods ){ i64 nByte = sqlite3BtreeGetPageSize(pFrom)*(i64)sqlite3BtreeLastPage(pFrom); - sqlite3OsFileControl(pFd, SQLITE_FCNTL_OVERWRITE, &nByte); + rc = sqlite3OsFileControl(pFd, SQLITE_FCNTL_OVERWRITE, &nByte); + if( rc==SQLITE_NOTFOUND ) rc = SQLITE_OK; + if( rc ) goto copy_finished; } /* Set up an sqlite3_backup object. sqlite3_backup.pDestDb must be set @@ -709,6 +711,7 @@ int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){ } assert( sqlite3BtreeIsInTrans(pTo)==0 ); +copy_finished: sqlite3BtreeLeave(pFrom); sqlite3BtreeLeave(pTo); return rc;