diff options
author | drh <drh@noemail.net> | 2020-06-07 22:44:23 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2020-06-07 22:44:23 +0000 |
commit | 2f82acc036c5f286fda6ef815bfc3469acd402e2 (patch) | |
tree | b674dbb89ee32f244fe61d92b6fbe26c20dc0396 /src/expr.c | |
parent | bf7909734a351c68f852a0ecb11f1c41738e96bf (diff) | |
download | sqlite-2f82acc036c5f286fda6ef815bfc3469acd402e2.tar.gz sqlite-2f82acc036c5f286fda6ef815bfc3469acd402e2.zip |
Fix minor OOM problems.
FossilOrigin-Name: 8b23d80271aab38abe42ee8b3ca4b746572ecef26c2a37b094b01560e6be9d45
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/expr.c b/src/expr.c index b1beb2e3e..6fbc8bb49 100644 --- a/src/expr.c +++ b/src/expr.c @@ -52,7 +52,12 @@ char sqlite3ExprAffinity(const Expr *pExpr){ op = pExpr->op; if( op==TK_SELECT ){ assert( pExpr->flags&EP_xIsSelect ); - return sqlite3ExprAffinity(pExpr->x.pSelect->pEList->a[0].pExpr); + if( ALWAYS(pExpr->x.pSelect) + && pExpr->x.pSelect->pEList + && ALWAYS(pExpr->x.pSelect->pEList->a[0].pExpr) + ){ + return sqlite3ExprAffinity(pExpr->x.pSelect->pEList->a[0].pExpr); + } } if( op==TK_REGISTER ) op = pExpr->op2; #ifndef SQLITE_OMIT_CAST @@ -5723,16 +5728,15 @@ int sqlite3FunctionUsesThisSrc(Expr *pExpr, SrcList *pSrcList){ ** will not generate any code in the preamble. */ static int agginfoPersistExprCb(Walker *pWalker, Expr *pExpr){ - if( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) + if( ALWAYS(!ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced)) && pExpr->pAggInfo!=0 ){ AggInfo *pAggInfo = pExpr->pAggInfo; int iAgg = pExpr->iAgg; Parse *pParse = pWalker->pParse; sqlite3 *db = pParse->db; - assert( pExpr->op==TK_COLUMN || pExpr->op==TK_AGG_COLUMN - || pExpr->op==TK_FUNCTION || pExpr->op==TK_AGG_FUNCTION ); - if( pExpr->op==TK_COLUMN || pExpr->op==TK_AGG_COLUMN ){ + assert( pExpr->op==TK_AGG_COLUMN || pExpr->op==TK_AGG_FUNCTION ); + if( pExpr->op==TK_AGG_COLUMN ){ assert( iAgg>=0 && iAgg<pAggInfo->nColumn ); if( pAggInfo->aCol[iAgg].pExpr==pExpr ){ pExpr = sqlite3ExprDup(db, pExpr, 0); |