aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2024-08-20 16:50:21 +0000
committerdrh <>2024-08-20 16:50:21 +0000
commitff4ad29d05156598d70b8328cbfb352114446bc3 (patch)
tree185b5854459c6373f9f488dcf01b11601779f665 /src
parent1521ca4c20c7ade39c671291b2214096c74cacd0 (diff)
downloadsqlite-ff4ad29d05156598d70b8328cbfb352114446bc3.tar.gz
sqlite-ff4ad29d05156598d70b8328cbfb352114446bc3.zip
Memory issues fixes so that mdevtest now passes.
FossilOrigin-Name: b249516f6a6650808e035ec219e762bf24dcb7c32a6235984b995d08d07d35d8
Diffstat (limited to 'src')
-rw-r--r--src/build.c6
-rw-r--r--src/insert.c8
2 files changed, 9 insertions, 5 deletions
diff --git a/src/build.c b/src/build.c
index b585c1971..9cbedf1ec 100644
--- a/src/build.c
+++ b/src/build.c
@@ -5005,11 +5005,13 @@ int sqlite3SrcItemAttachSubquery(
Subquery *p;
if( pSelect==0 ) return SQLITE_OK;
assert( pItem->fg.isSubquery==0 );
- if( pItem->fg.fixedSchema==0 && pItem->u4.zDatabase!=0 ){
+ if( pItem->fg.fixedSchema ){
+ pItem->u4.pSchema = 0;
+ pItem->fg.fixedSchema = 0;
+ }else if( pItem->u4.zDatabase!=0 ){
sqlite3DbFree(pParse->db, pItem->u4.zDatabase);
pItem->u4.zDatabase = 0;
}
- pItem->fg.fixedSchema = 0;
if( dupSelect ){
pSelect = sqlite3SelectDup(pParse->db, pSelect, 0);
if( pSelect==0 ) return 0;
diff --git a/src/insert.c b/src/insert.c
index d65ead2a0..8214cd9c5 100644
--- a/src/insert.c
+++ b/src/insert.c
@@ -585,9 +585,11 @@ void sqlite3AutoincrementEnd(Parse *pParse){
void sqlite3MultiValuesEnd(Parse *pParse, Select *pVal){
if( ALWAYS(pVal) && pVal->pSrc->nSrc>0 ){
SrcItem *pItem = &pVal->pSrc->a[0];
- assert( pItem->fg.isSubquery && pItem->u4.pSubq!=0 );
- sqlite3VdbeEndCoroutine(pParse->pVdbe, pItem->u4.pSubq->regReturn);
- sqlite3VdbeJumpHere(pParse->pVdbe, pItem->u4.pSubq->addrFillSub - 1);
+ assert( (pItem->fg.isSubquery && pItem->u4.pSubq!=0) || pParse->nErr );
+ if( pItem->fg.isSubquery ){
+ sqlite3VdbeEndCoroutine(pParse->pVdbe, pItem->u4.pSubq->regReturn);
+ sqlite3VdbeJumpHere(pParse->pVdbe, pItem->u4.pSubq->addrFillSub - 1);
+ }
}
}