summaryrefslogtreecommitdiff
path: root/src/walker.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/walker.c')
-rw-r--r--src/walker.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/walker.c b/src/walker.c
index c95a9c1..eab96ea 100644
--- a/src/walker.c
+++ b/src/walker.c
@@ -125,12 +125,18 @@ int sqlite3WalkSelect(Walker *pWalker, Select *p){
int rc;
if( p==0 || pWalker->xSelectCallback==0 ) return WRC_Continue;
rc = WRC_Continue;
- while( p ){
+ pWalker->walkerDepth++;
+ while( p ){
rc = pWalker->xSelectCallback(pWalker, p);
if( rc ) break;
- if( sqlite3WalkSelectExpr(pWalker, p) ) return WRC_Abort;
- if( sqlite3WalkSelectFrom(pWalker, p) ) return WRC_Abort;
+ if( sqlite3WalkSelectExpr(pWalker, p)
+ || sqlite3WalkSelectFrom(pWalker, p)
+ ){
+ pWalker->walkerDepth--;
+ return WRC_Abort;
+ }
p = p->pPrior;
}
+ pWalker->walkerDepth--;
return rc & WRC_Abort;
}