diff options
author | drh <drh@noemail.net> | 2013-08-19 12:49:06 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2013-08-19 12:49:06 +0000 |
commit | db78b96111f93c7b183744c76f687ad84e14c567 (patch) | |
tree | 455cba36272a9eaede190e1c5257bd0fb7d27cf3 /src/expr.c | |
parent | 700a7fdf833ce71ee46da1292f96e82afa2dd2f2 (diff) | |
parent | 77dfd5bb447381a23791abb35569d39046281f59 (diff) | |
download | sqlite-db78b96111f93c7b183744c76f687ad84e14c567.tar.gz sqlite-db78b96111f93c7b183744c76f687ad84e14c567.zip |
Merge in all the latest updates and enhancements from trunk.
FossilOrigin-Name: 67587a3348b84424b2ab1f2df1ea923a5168e2e4
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/expr.c b/src/expr.c index 3857d5d84..5c5297c18 100644 --- a/src/expr.c +++ b/src/expr.c @@ -1734,15 +1734,17 @@ int sqlite3CodeSubselect( dest.affSdst = (u8)affinity; assert( (pExpr->iTable&0x0000FFFF)==pExpr->iTable ); pExpr->x.pSelect->iLimit = 0; + testcase( pKeyInfo==0 ); /* Caused by OOM in sqlite3KeyInfoAlloc() */ if( sqlite3Select(pParse, pExpr->x.pSelect, &dest) ){ sqlite3DbFree(pParse->db, pKeyInfo); return 0; } pEList = pExpr->x.pSelect->pEList; - if( pKeyInfo && ALWAYS(pEList!=0 && pEList->nExpr>0) ){ - pKeyInfo->aColl[0] = sqlite3BinaryCompareCollSeq(pParse, pExpr->pLeft, - pEList->a[0].pExpr); - } + assert( pKeyInfo!=0 ); /* OOM will cause exit after sqlite3Select() */ + assert( pEList!=0 ); + assert( pEList->nExpr>0 ); + pKeyInfo->aColl[0] = sqlite3BinaryCompareCollSeq(pParse, pExpr->pLeft, + pEList->a[0].pExpr); }else if( ALWAYS(pExpr->x.pList!=0) ){ /* Case 2: expr IN (exprlist) ** |