diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/test_tclvar.c | 9 | ||||
-rw-r--r-- | src/where.c | 2 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/test_tclvar.c b/src/test_tclvar.c index 7fd3b3bac..1219190c0 100644 --- a/src/test_tclvar.c +++ b/src/test_tclvar.c @@ -165,6 +165,15 @@ static int tclvarFilter( Tcl_ListObjAppendElement(0, p, pArg); } Tcl_EvalObjEx(interp, p, TCL_EVAL_GLOBAL); + if( pCur->pList1 ){ + Tcl_DecrRefCount(pCur->pList1); + } + if( pCur->pList2 ){ + Tcl_DecrRefCount(pCur->pList2); + pCur->pList2 = 0; + } + pCur->i1 = 0; + pCur->i2 = 0; pCur->pList1 = Tcl_GetObjResult(interp); Tcl_IncrRefCount(pCur->pList1); assert( pCur->i1==0 && pCur->i2==0 && pCur->pList2==0 ); diff --git a/src/where.c b/src/where.c index c39504047..067ec4079 100644 --- a/src/where.c +++ b/src/where.c @@ -2876,6 +2876,7 @@ static Bitmask codeOneLoopStart( const struct sqlite3_index_constraint *aConstraint = pVtabIdx->aConstraint; + sqlite3ExprCachePush(pParse); iReg = sqlite3GetTempRange(pParse, nConstraint+2); for(j=1; j<=nConstraint; j++){ for(k=0; k<nConstraint; k++){ @@ -2902,6 +2903,7 @@ static Bitmask codeOneLoopStart( pLevel->p1 = iCur; pLevel->p2 = sqlite3VdbeCurrentAddr(v); sqlite3ReleaseTempRange(pParse, iReg, nConstraint+2); + sqlite3ExprCachePop(pParse, 1); }else #endif /* SQLITE_OMIT_VIRTUALTABLE */ |