1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-27 20:41:58 +03:00

The previous OOM fix was bad. Back it out and replace it with a better one.

FossilOrigin-Name: 1e3bc3698a4b779e6af8e3c727929c4dbddf3edb
This commit is contained in:
drh
2016-08-24 00:51:48 +00:00
parent 894241c847
commit ac6b47d164
4 changed files with 17 additions and 17 deletions

View File

@ -1,5 +1,5 @@
C Avoid\sa\spotential\snull-pointer\sdereference\sfollowing\san\sOOM. C The\sprevious\sOOM\sfix\swas\sbad.\s\sBack\sit\sout\sand\sreplace\sit\swith\sa\sbetter\sone.
D 2016-08-24T00:25:27.492 D 2016-08-24T00:51:48.043
F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088 F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a
@ -338,7 +338,7 @@ F src/ctime.c e77f3dc297b4b65c96da78b4ae4272fdfae863d7
F src/date.c 95c9a8d00767e7221a8e9a31f4e913fc8029bf6b F src/date.c 95c9a8d00767e7221a8e9a31f4e913fc8029bf6b
F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
F src/delete.c 76c084f0265f4a3cd1ecf17eee112a94f1ccbc05 F src/delete.c 76c084f0265f4a3cd1ecf17eee112a94f1ccbc05
F src/expr.c be8772ac5019400096eea179c1bfd5acc420bde9 F src/expr.c f433feeeaa43d52a4e029066a1af02bac9ed5f1a
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c e2be0968c1adc679c87e467aa5b4f167588f38a8 F src/fkey.c e2be0968c1adc679c87e467aa5b4f167588f38a8
F src/func.c 29cc9acb170ec1387b9f63eb52cd85f8de96c771 F src/func.c 29cc9acb170ec1387b9f63eb52cd85f8de96c771
@ -466,7 +466,7 @@ F src/wal.h 6dd221ed384afdc204bc61e25c23ef7fd5a511f2
F src/walker.c 2d2cc7fb0f320f7f415215d7247f3c584141ac09 F src/walker.c 2d2cc7fb0f320f7f415215d7247f3c584141ac09
F src/where.c c7cdfd54f383090bb801cdd50d36de1a24684bb2 F src/where.c c7cdfd54f383090bb801cdd50d36de1a24684bb2
F src/whereInt.h 14dd243e13b81cbb0a66063d38b70f93a7d6e613 F src/whereInt.h 14dd243e13b81cbb0a66063d38b70f93a7d6e613
F src/wherecode.c 0c790c422ea5ecb6c83d6a78f2c4ebc036eea90e F src/wherecode.c 0c99e2e97c23ec0b0d64071b3590d3a5e6091a96
F src/whereexpr.c aa54bf11adf6bc7e52f56281f436ab5fd421ce16 F src/whereexpr.c aa54bf11adf6bc7e52f56281f436ab5fd421ce16
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
@ -1520,7 +1520,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P 838c50a5bf46fd0340839d577fa28ba02b4f2034 P 25f6ed8de4df9c9890d4a352a6d11084433e82ea
R 960a362fd9424a163c5a4d069783cdea R 19a9e7a69bf070f3aad327c389d879a1
U drh U drh
Z 2276dcfeffa9ab927fd9ef765fca4810 Z c33731cf7b01c5dd25f3f1c4114950f7

View File

@ -1 +1 @@
25f6ed8de4df9c9890d4a352a6d11084433e82ea 1e3bc3698a4b779e6af8e3c727929c4dbddf3edb

View File

@ -1952,6 +1952,7 @@ static Select *isCandidateForInOpt(Expr *pX){
assert( pTab->pSelect==0 ); /* FROM clause is not a view */ assert( pTab->pSelect==0 ); /* FROM clause is not a view */
if( IsVirtual(pTab) ) return 0; /* FROM clause not a virtual table */ if( IsVirtual(pTab) ) return 0; /* FROM clause not a virtual table */
pEList = p->pEList; pEList = p->pEList;
assert( pEList!=0 );
/* All SELECT results must be columns. */ /* All SELECT results must be columns. */
for(i=0; i<pEList->nExpr; i++){ for(i=0; i<pEList->nExpr; i++){
@ -2103,7 +2104,6 @@ int sqlite3FindInIndex(
int mustBeUnique; /* True if RHS must be unique */ int mustBeUnique; /* True if RHS must be unique */
Vdbe *v = sqlite3GetVdbe(pParse); /* Virtual machine being coded */ Vdbe *v = sqlite3GetVdbe(pParse); /* Virtual machine being coded */
if( pParse->db->mallocFailed ) return IN_INDEX_NOOP;
assert( pX->op==TK_IN ); assert( pX->op==TK_IN );
mustBeUnique = (inFlags & IN_INDEX_LOOP)!=0; mustBeUnique = (inFlags & IN_INDEX_LOOP)!=0;

View File

@ -383,7 +383,7 @@ static int codeEqualityTerm(
sqlite3VdbeAddOp2(v, OP_Null, 0, iReg); sqlite3VdbeAddOp2(v, OP_Null, 0, iReg);
#ifndef SQLITE_OMIT_SUBQUERY #ifndef SQLITE_OMIT_SUBQUERY
}else{ }else{
int eType; int eType = IN_INDEX_NOOP;
int iTab; int iTab;
struct InLoop *pIn; struct InLoop *pIn;
WhereLoop *pLoop = pLevel->pWLoop; WhereLoop *pLoop = pLevel->pWLoop;
@ -436,13 +436,13 @@ static int codeEqualityTerm(
pLhs = sqlite3ExprListAppend(pParse, pLhs, pNewLhs); pLhs = sqlite3ExprListAppend(pParse, pLhs, pNewLhs);
} }
} }
if( !db->mallocFailed ){
pX->x.pSelect->pEList = pRhs; pX->x.pSelect->pEList = pRhs;
pX->pLeft->x.pList = pLhs; pX->pLeft->x.pList = pLhs;
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap);
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap); pX->x.pSelect->pEList = pOrigRhs;
pX->x.pSelect->pEList = pOrigRhs; pX->pLeft->x.pList = pOrigLhs;
pX->pLeft->x.pList = pOrigLhs; }
sqlite3ExprListDelete(pParse->db, pLhs); sqlite3ExprListDelete(pParse->db, pLhs);
sqlite3ExprListDelete(pParse->db, pRhs); sqlite3ExprListDelete(pParse->db, pRhs);
} }