aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test_tclvar.c9
-rw-r--r--src/where.c2
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 */