From: drh Date: Thu, 1 Apr 2010 02:22:19 +0000 (+0000) Subject: Restore the size information in the BtShared structure when a transaction X-Git-Tag: version-3.7.2~502 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1f5b467f13bc7817c821148c1d9986c99143beb0;p=thirdparty%2Fsqlite.git Restore the size information in the BtShared structure when a transaction rolls back. FossilOrigin-Name: 802aeb30c9baf4059fa84f4693f290f80d3a4085 --- diff --git a/manifest b/manifest index 57a1433a5e..c1d2d40f0f 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -C Make\ssure\san\sOOM\serror\son\ssqlite3PagerPagecount()\sis\sdetected\sand\sreported\nout\sto\sthe\sinterface. -D 2010-03-31T23:20:04 +C Restore\sthe\ssize\sinformation\sin\sthe\sBtShared\sstructure\swhen\sa\stransaction\nrolls\sback. +D 2010-04-01T02:22:20 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -112,7 +112,7 @@ F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34 F src/backup.c e86634da8c48357a759694c9c7c471125cd8d5a8 F src/bitvec.c 06ad2c36a9c3819c0b9cbffec7b15f58d5d834e0 F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff -F src/btree.c 02ad0060d00a05dd167a3b60e1c9abb8f4679cb3 +F src/btree.c 639a8ca0656708e1448d60757a7ac4342ddddcf8 F src/btree.h ad6cff92286f9b02ec32f0b97136e9a544249f37 F src/btreeInt.h 22447d259639271774a931cbf66aa55112846681 F src/build.c 11100b66fb97638d2d874c1d34d8db90650bb1d7 @@ -797,14 +797,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P a91db0b1cd0b0fbadc5c8fe2eb8863629b411d87 -R d0cfacaf286f70607c801b2627e3ae09 +P 8aecf302a5aac66e43a8cc6c4e0d917f74e9e0de +R bd1d919e84a4b353ebc0e7345ab0655f U drh -Z c3eaed996d3d32543d54fe382e9d282d +Z ed0dff6d70629b6b387b9571deb31dbc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD8DBQFLs9ipoxKgR168RlERAoJtAJ0e7fA4jGclTUv0A6kz2i9Ci2nJlwCferWu -1xFYT/N/pXTWZeYe5uezcH0= -=FDGP +iD8DBQFLtANfoxKgR168RlERArNuAJ9P3VmiLa1914Cr4qg4M+NSrvdCAQCfSUDl +h2MNlBC2RVGWwOilTcrxl34= +=m3P9 -----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index 123704951a..907a91f57c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8aecf302a5aac66e43a8cc6c4e0d917f74e9e0de \ No newline at end of file +802aeb30c9baf4059fa84f4693f290f80d3a4085 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 0b60a78977..0a3d4a2aa7 100644 --- a/src/btree.c +++ b/src/btree.c @@ -3198,6 +3198,11 @@ int sqlite3BtreeRollback(Btree *p){ ** call btreeGetPage() on page 1 again to make ** sure pPage1->aData is set correctly. */ if( btreeGetPage(pBt, 1, &pPage1, 0)==SQLITE_OK ){ + int nPage = get4byte(28+(u8*)pPage1->aData); + testcase( nPage==0 ); + if( nPage==0 ) sqlite3PagerPagecount(pBt->pPager, &nPage); + testcase( pBt->nPage!=nPage ); + pBt->nPage = nPage; releasePage(pPage1); } assert( countWriteCursors(pBt)==0 );