Index: src/expr.c ================================================================== --- src/expr.c +++ src/expr.c @@ -3050,16 +3050,17 @@ ){ struct ExprList_item *pItem; int i, n; assert( pList!=0 ); assert( target>0 ); + assert( pParse->pVdbe || pParse->db->mallocFailed ); + if( pParse->pVdbe==0 ) return 0; n = pList->nExpr; for(pItem=pList->a, i=0; ipExpr; int inReg = sqlite3ExprCodeTarget(pParse, pExpr, target+i); - assert( pParse->pVdbe || pParse->db->mallocFailed ); - if( inReg!=target+i && pParse->pVdbe ){ + if( inReg!=target+i ){ sqlite3VdbeAddOp2(pParse->pVdbe, doHardCopy ? OP_Copy : OP_SCopy, inReg, target+i); } } return n; Index: src/vdbe.c ================================================================== --- src/vdbe.c +++ src/vdbe.c @@ -1141,10 +1141,12 @@ */ pMem = p->pResultSet = &aMem[pOp->p1]; for(i=0; ip2; i++){ assert( memIsValid(&pMem[i]) ); Deephemeralize(&pMem[i]); + assert( (pMem[i].flags & MEM_Ephem)==0 + || (pMem[i].flags & (MEM_Str|MEM_Blob))==0 ); sqlite3VdbeMemNulTerminate(&pMem[i]); sqlite3VdbeMemStoreType(&pMem[i]); REGISTER_TRACE(pOp->p1+i, &pMem[i]); } if( db->mallocFailed ) goto no_mem;