aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/build.c14
-rw-r--r--src/update.c11
2 files changed, 14 insertions, 11 deletions
diff --git a/src/build.c b/src/build.c
index f0136cbe8..c9396708d 100644
--- a/src/build.c
+++ b/src/build.c
@@ -4501,15 +4501,15 @@ void sqlite3SrcListIndexedBy(Parse *pParse, SrcList *p, Token *pIndexedBy){
** are deleted by this function.
*/
SrcList *sqlite3SrcListAppendList(Parse *pParse, SrcList *p1, SrcList *p2){
- if( p2 && p1 ){
- assert( p1->nSrc==1 );
- p1 = sqlite3SrcListEnlarge(pParse, p1, p2->nSrc, p1->nSrc);
- if( p1 ){
- assert( p1->nSrc==1+p2->nSrc );
+ assert( p1 && p1->nSrc==1 );
+ if( p2 ){
+ SrcList *pNew = sqlite3SrcListEnlarge(pParse, p1, p2->nSrc, 1);
+ if( pNew==0 ){
+ sqlite3SrcListDelete(pParse->db, p2);
+ }else{
+ p1 = pNew;
memcpy(&p1->a[1], p2->a, p2->nSrc*sizeof(struct SrcList_item));
sqlite3_free(p2);
- }else{
- sqlite3SrcListDelete(pParse->db, p2);
}
}
return p1;
diff --git a/src/update.c b/src/update.c
index fa80a7da8..0b98e7017 100644
--- a/src/update.c
+++ b/src/update.c
@@ -229,10 +229,13 @@ static void updatePopulateEphTable(
);
}
}
- for(i=0; i<pChanges->nExpr; i++){
- pList = sqlite3ExprListAppend(pParse, pList,
- sqlite3ExprDup(db, pChanges->a[i].pExpr, 0)
- );
+ assert( pChanges || db->mallocFailed );
+ if( pChanges ){
+ for(i=0; i<pChanges->nExpr; i++){
+ pList = sqlite3ExprListAppend(pParse, pList,
+ sqlite3ExprDup(db, pChanges->a[i].pExpr, 0)
+ );
+ }
}
pSelect = sqlite3SelectNew(
pParse, pList, pSrc, pWhere2, pGroupBy, 0, pOrderBy2, 0, pLimit2