Fix a virtual table related assert() that can fail following a malloc failure. (CVS 6064)
FossilOrigin-Name: c6fd3b8f29927c0fc634f82885f144c78f0105d9
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
C Fix\sa\scouple\sof\sproblems\sin\stest\sfile\stest_journal.c\sthat\swere\scausing\ssegfaults\swhen\srunning\sall.test.\s(CVS\s6063)
|
||||
D 2008-12-24T09:30:22
|
||||
C Fix\sa\svirtual\stable\srelated\sassert()\sthat\scan\sfail\sfollowing\sa\smalloc\sfailure.\s(CVS\s6064)
|
||||
D 2008-12-24T11:25:40
|
||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||
F Makefile.in 77635d0909c2067cee03889a1e04ce910d8fb809
|
||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||
@@ -207,7 +207,7 @@ F src/vdbeblob.c b0dcebfafedcf9c0addc7901ad98f6f986c08935
|
||||
F src/vdbemem.c f9c859ac17e2e05a0f249868ce4f191f69edd31d
|
||||
F src/vtab.c e39e011d7443a8d574b1b9cde207a35522e6df43
|
||||
F src/walker.c 488c2660e13224ff70c0c82761118efb547f8f0d
|
||||
F src/where.c ef69833cdf0e19a91ec1b305b506d100ac3f648f
|
||||
F src/where.c b273a232aa6e7616bb6025a80276c8aff8df2b22
|
||||
F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617
|
||||
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
||||
F test/alias.test 597662c5d777a122f9a3df0047ea5c5bd383a911
|
||||
@@ -685,7 +685,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
|
||||
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||
P 55d4f493e7df8515574a75caec9967d6c71b6012
|
||||
R cc29a042a248eb8ecfc4c3d8c12a4a30
|
||||
P 416c9efb49ba207a9a79d06d0b13854695a8876c
|
||||
R 9a2fdeee38c8141c5f23656702bf84f1
|
||||
U danielk1977
|
||||
Z f0704a3629730edd74463891e861aad2
|
||||
Z 50d42c2e2360bf3c9b72e4e25ad13cf2
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
416c9efb49ba207a9a79d06d0b13854695a8876c
|
||||
c6fd3b8f29927c0fc634f82885f144c78f0105d9
|
||||
+8
-3
@@ -16,7 +16,7 @@
|
||||
** so is applicable. Because this module is responsible for selecting
|
||||
** indices, you might also think of this module as the "query optimizer".
|
||||
**
|
||||
** $Id: where.c,v 1.343 2008/12/23 23:56:22 drh Exp $
|
||||
** $Id: where.c,v 1.344 2008/12/24 11:25:40 danielk1977 Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
|
||||
@@ -2781,7 +2781,10 @@ static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){
|
||||
for(i=0; i<pWInfo->nLevel; i++){
|
||||
sqlite3_index_info *pInfo = pWInfo->a[i].pIdxInfo;
|
||||
if( pInfo ){
|
||||
assert( pInfo->needToFreeIdxStr==0 );
|
||||
assert( pInfo->needToFreeIdxStr==0 || db->mallocFailed );
|
||||
if( pInfo->needToFreeIdxStr ){
|
||||
sqlite3_free(pInfo->idxStr);
|
||||
}
|
||||
sqlite3DbFree(db, pInfo);
|
||||
}
|
||||
}
|
||||
@@ -3093,7 +3096,9 @@ WhereInfo *sqlite3WhereBegin(
|
||||
}
|
||||
}
|
||||
WHERETRACE(("*** Optimizer Finished ***\n"));
|
||||
if( db->mallocFailed ) goto whereBeginError;
|
||||
if( db->mallocFailed ){
|
||||
goto whereBeginError;
|
||||
}
|
||||
|
||||
/* If the total query only selects a single row, then the ORDER BY
|
||||
** clause is irrelevant.
|
||||
|
||||
Reference in New Issue
Block a user