diff options
author | drh <> | 2024-08-20 17:24:42 +0000 |
---|---|---|
committer | drh <> | 2024-08-20 17:24:42 +0000 |
commit | 27c680cc69f181a548d942168e45e37b498684a5 (patch) | |
tree | 7e97ddeae9be0a5023cd3f8f1ae41ac0936c7284 /src | |
parent | ff4ad29d05156598d70b8328cbfb352114446bc3 (diff) | |
download | sqlite-27c680cc69f181a548d942168e45e37b498684a5.tar.gz sqlite-27c680cc69f181a548d942168e45e37b498684a5.zip |
Fix a memory leak so that now all dev tests (including TH3) are passing.
FossilOrigin-Name: 3995c45fff0e4bd10bcf49cc16eb1050216426723c63ba56d3ae5ba738c34019
Diffstat (limited to 'src')
-rw-r--r-- | src/select.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/select.c b/src/select.c index 8bddc03bb..0c10550fa 100644 --- a/src/select.c +++ b/src/select.c @@ -5600,12 +5600,17 @@ static int convertCompoundSelectToSubquery(Walker *pWalker, Select *p){ /* If we reach this point, that means the transformation is required. */ pParse = pWalker->pParse; + if( pParse->nErr ) return WRC_Abort; db = pParse->db; pNew = sqlite3DbMallocZero(db, sizeof(*pNew) ); if( pNew==0 ) return WRC_Abort; memset(&dummy, 0, sizeof(dummy)); pNewSrc = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&dummy,pNew,0); - if( pNewSrc==0 ) return WRC_Abort; + assert( pNewSrc!=0 || pParse->nErr ); + if( pParse->nErr ){ + sqlite3SrcListDelete(db, pNewSrc); + return WRC_Abort; + } *pNew = *p; p->pSrc = pNewSrc; p->pEList = sqlite3ExprListAppend(pParse, 0, sqlite3Expr(db, TK_ASTERISK, 0)); |