diff options
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/expr.c b/src/expr.c index d9c8af65c..bd45fbcd1 100644 --- a/src/expr.c +++ b/src/expr.c @@ -1648,6 +1648,14 @@ Select *sqlite3SelectDup(sqlite3 *db, Select *pDup, int flags){ if( p->pWin && db->mallocFailed==0 ) gatherSelectWindows(pNew); #endif pNew->selId = p->selId; + if( db->mallocFailed ){ + /* Any prior OOM might have left the Select object incomplete. + ** Delete the whole thing rather than allow an incomplete Select + ** to be used by the code generator. */ + pNew->pNext = 0; + sqlite3SelectDelete(db, pNew); + break; + } *pp = pNew; pp = &pNew->pPrior; pNext = pNew; |