]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a case where database corruption may cause an assert() to fail.
authordan <dan@noemail.net>
Sun, 24 Feb 2013 11:50:43 +0000 (11:50 +0000)
committerdan <dan@noemail.net>
Sun, 24 Feb 2013 11:50:43 +0000 (11:50 +0000)
FossilOrigin-Name: ba33bb059ed4f4547da2880dbc8bd827c06fae34

manifest
manifest.uuid
src/btree.c

index 034f22ed525c08150206036d78f00adb7391fd6a..04965dd7584990cfe522697836e1b05a40225dee 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\scase\sin\sthe\sincremental\svacuum\scode\swhere\sdatabase\scorruption\swas\sgoing\sunreported.
-D 2013-02-23T19:43:47.508
+C Fix\sa\scase\swhere\sdatabase\scorruption\smay\scause\san\sassert()\sto\sfail.
+D 2013-02-24T11:50:43.950
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in a48faa9e7dd7d556d84f5456eabe5825dd8a6282
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -121,7 +121,7 @@ F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
 F src/backup.c 0b8d2108a10ada00e642525921960b0c27451955
 F src/bitvec.c 26675fe8e431dc555e6f2d0e11e651d172234aa1
 F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7
-F src/btree.c b84e2ac3b4ed5a4eb1b186c9c37eef53b635bc7f
+F src/btree.c cbad71970cfadfa342fc137ca5e319f98b2d0da1
 F src/btree.h 3ad7964d6c5b1c7bff569aab6adfa075f8bf06cd
 F src/btreeInt.h eecc84f02375b2bb7a44abbcbbe3747dde73edb2
 F src/build.c 73ca65f32938e4e0d94e831b61b5749b211b79be
@@ -1034,7 +1034,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P f921df59560d536f5b80eef8c995cbe3ff591bae
-R 1c3862ad49b71ee257cac1e86a276cf3
+P 4cd30c72629a7f44b18026a70103aa0bb8a3b959
+R 4b714cf37fc577e9e0a95ce1f9383dd9
 U dan
-Z 0b46646dde77425bfb67d915fec16418
+Z 57f0815a503efb202bba1a714e0db419
index 78f73b491fe8346d5460f556718df0450ab300fe..801adee7342a2de6c783d7122b2382c7eaec5c26 100644 (file)
@@ -1 +1 @@
-4cd30c72629a7f44b18026a70103aa0bb8a3b959
\ No newline at end of file
+ba33bb059ed4f4547da2880dbc8bd827c06fae34
\ No newline at end of file
index 6c6d0b953bbd0eb9bad790c370def0a2c15d165d..84bafb9e73a57fd854a8d49dc9266ecad56a34d2 100644 (file)
@@ -3066,7 +3066,9 @@ int sqlite3BtreeIncrVacuum(Btree *p){
     Pgno nFree = get4byte(&pBt->pPage1->aData[36]);
     Pgno nFin = finalDbSize(pBt, nOrig, nFree);
 
-    if( nFree>0 ){
+    if( nOrig<nFin ){
+      rc = SQLITE_CORRUPT_BKPT;
+    }else if( nFree>0 ){
       invalidateAllOverflowCache(pBt);
       rc = incrVacuumStep(pBt, nFin, nOrig, 0);
       if( rc==SQLITE_OK ){