aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2024-08-20 17:24:42 +0000
committerdrh <>2024-08-20 17:24:42 +0000
commit27c680cc69f181a548d942168e45e37b498684a5 (patch)
tree7e97ddeae9be0a5023cd3f8f1ae41ac0936c7284 /src
parentff4ad29d05156598d70b8328cbfb352114446bc3 (diff)
downloadsqlite-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.c7
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));