1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Fix a case where database corruption may cause an assert() to fail.

FossilOrigin-Name: ba33bb059ed4f4547da2880dbc8bd827c06fae34
This commit is contained in:
dan
2013-02-24 11:50:43 +00:00
parent e0b605917e
commit 9138471141
3 changed files with 10 additions and 8 deletions

View File

@@ -1,5 +1,5 @@
C Fix\sa\scase\sin\sthe\sincremental\svacuum\scode\swhere\sdatabase\scorruption\swas\sgoing\sunreported. C Fix\sa\scase\swhere\sdatabase\scorruption\smay\scause\san\sassert()\sto\sfail.
D 2013-02-23T19:43:47.508 D 2013-02-24T11:50:43.950
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in a48faa9e7dd7d556d84f5456eabe5825dd8a6282 F Makefile.in a48faa9e7dd7d556d84f5456eabe5825dd8a6282
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -121,7 +121,7 @@ F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
F src/backup.c 0b8d2108a10ada00e642525921960b0c27451955 F src/backup.c 0b8d2108a10ada00e642525921960b0c27451955
F src/bitvec.c 26675fe8e431dc555e6f2d0e11e651d172234aa1 F src/bitvec.c 26675fe8e431dc555e6f2d0e11e651d172234aa1
F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7 F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7
F src/btree.c b84e2ac3b4ed5a4eb1b186c9c37eef53b635bc7f F src/btree.c cbad71970cfadfa342fc137ca5e319f98b2d0da1
F src/btree.h 3ad7964d6c5b1c7bff569aab6adfa075f8bf06cd F src/btree.h 3ad7964d6c5b1c7bff569aab6adfa075f8bf06cd
F src/btreeInt.h eecc84f02375b2bb7a44abbcbbe3747dde73edb2 F src/btreeInt.h eecc84f02375b2bb7a44abbcbbe3747dde73edb2
F src/build.c 73ca65f32938e4e0d94e831b61b5749b211b79be F src/build.c 73ca65f32938e4e0d94e831b61b5749b211b79be
@@ -1034,7 +1034,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
P f921df59560d536f5b80eef8c995cbe3ff591bae P 4cd30c72629a7f44b18026a70103aa0bb8a3b959
R 1c3862ad49b71ee257cac1e86a276cf3 R 4b714cf37fc577e9e0a95ce1f9383dd9
U dan U dan
Z 0b46646dde77425bfb67d915fec16418 Z 57f0815a503efb202bba1a714e0db419

View File

@@ -1 +1 @@
4cd30c72629a7f44b18026a70103aa0bb8a3b959 ba33bb059ed4f4547da2880dbc8bd827c06fae34

View File

@@ -3066,7 +3066,9 @@ int sqlite3BtreeIncrVacuum(Btree *p){
Pgno nFree = get4byte(&pBt->pPage1->aData[36]); Pgno nFree = get4byte(&pBt->pPage1->aData[36]);
Pgno nFin = finalDbSize(pBt, nOrig, nFree); Pgno nFin = finalDbSize(pBt, nOrig, nFree);
if( nFree>0 ){ if( nOrig<nFin ){
rc = SQLITE_CORRUPT_BKPT;
}else if( nFree>0 ){
invalidateAllOverflowCache(pBt); invalidateAllOverflowCache(pBt);
rc = incrVacuumStep(pBt, nFin, nOrig, 0); rc = incrVacuumStep(pBt, nFin, nOrig, 0);
if( rc==SQLITE_OK ){ if( rc==SQLITE_OK ){