From: dan Date: Thu, 3 Jun 2010 09:01:11 +0000 (+0000) Subject: If a malloc fails while allocating a savepoint object at the pager level, do not... X-Git-Tag: version-3.7.2~312 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8e64db2b09941145bdeba3ef68850960945a34d5;p=thirdparty%2Fsqlite.git If a malloc fails while allocating a savepoint object at the pager level, do not try to roll that savepoint back later on. FossilOrigin-Name: 91cb08ffb6332a142542c012b58aa49206ee5704 --- diff --git a/manifest b/manifest index c25461abaa..614234cfe7 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,5 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C When\sa\slock\sfails\sdue\sto\san\sI/O\serror\s(not\san\sSQLITE_BUSY)\sthen\sthe\scheckpoint\nshould\sfail. -D 2010-06-02T20:38:20 +C If\sa\smalloc\sfails\swhile\sallocating\sa\ssavepoint\sobject\sat\sthe\spager\slevel,\sdo\snot\stry\sto\sroll\sthat\ssavepoint\sback\slater\son. +D 2010-06-03T09:01:11 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in a5cad1f8f3e021356bfcc6c77dc16f6f1952bbc3 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -157,7 +154,7 @@ F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f F src/os_os2.c 665876d5eec7585226b0a1cf5e18098de2b2da19 F src/os_unix.c 8fa4eeb27c54f26e9ce01bead2fa117fadea1526 F src/os_win.c f815403c51a2adad30244374c801dd7fd2734567 -F src/pager.c fa5ce633dac820ad15896c8b651a21487e764fe1 +F src/pager.c 1eca1ede7d455a356524834f590546110c3b1a64 F src/pager.h 76466c3a5af56943537f68b1f16567101a0cd1d0 F src/parse.y ace5c7a125d9f2a410e431ee3209034105045f7e F src/pcache.c ace8f6a5ecd4711cc66a1b23053be7109bd437cf @@ -818,14 +815,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 6b4aed6aae7dc9e92807d27375cbe1e83c15841b -R 5a63358b24f762d2a5d723d2f4dee266 -U drh -Z 5916110e5843d94fcf92f8c8799678c0 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFMBsE/oxKgR168RlERAnyXAJ9L8EZUrUM001IAwVmNi3rJmErAKACfZ+qz -cfaXGrDf9yLgardB9fTDyec= -=U93m ------END PGP SIGNATURE----- +P c6eb0a27270df69018576232d8f97c16d63d8f6e +R 73f30283983a54a2ac76ec9e924b342e +U dan +Z 34e0f24dbde51f432bdf60db64ca02da diff --git a/manifest.uuid b/manifest.uuid index ce583037f6..24e297e826 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c6eb0a27270df69018576232d8f97c16d63d8f6e \ No newline at end of file +91cb08ffb6332a142542c012b58aa49206ee5704 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 416e9ed135..3dbc01f2a9 100644 --- a/src/pager.c +++ b/src/pager.c @@ -5449,7 +5449,6 @@ int sqlite3PagerOpenSavepoint(Pager *pPager, int nSavepoint){ } memset(&aNew[nCurrent], 0, (nSavepoint-nCurrent) * sizeof(PagerSavepoint)); pPager->aSavepoint = aNew; - pPager->nSavepoint = nSavepoint; /* Populate the PagerSavepoint structures just allocated. */ for(ii=nCurrent; iipWal, aNew[ii].aWalData); } + pPager->nSavepoint = ii+1; } + assert( pPager->nSavepoint==nSavepoint ); /* Open the sub-journal, if it is not already opened. */ rc = openSubJournal(pPager);