aboutsummaryrefslogtreecommitdiff
path: root/src/window.c
diff options
context:
space:
mode:
authordan <Dan Kennedy>2021-04-06 18:40:27 +0000
committerdan <Dan Kennedy>2021-04-06 18:40:27 +0000
commit5a9fd231eabc51b95ab6896d6f8268f643bf8efd (patch)
tree4ca220e5a061ec1bff89d8f8ff4f0ff19f4979ec /src/window.c
parent112501fec22d65d7bfd016b3f9383f2e7211e6b6 (diff)
downloadsqlite-5a9fd231eabc51b95ab6896d6f8268f643bf8efd.tar.gz
sqlite-5a9fd231eabc51b95ab6896d6f8268f643bf8efd.zip
Restructure a loop in window.c to avoid hitting an assert() following an OOM. dbsqlfuzz test case 6ef74a9659de87e9be3d8694ad062c448aa7ef1d.
FossilOrigin-Name: 887c19a15ba60a5dc375dda7e289d476ba24d4adb38086a013df9709b88f32a7
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/window.c b/src/window.c
index ae97a1600..ad3b47dad 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1686,15 +1686,15 @@ static void windowAggStep(
}
if( pWin->bExprArgs ){
- int iStart = sqlite3VdbeCurrentAddr(v);
- VdbeOp *pOp, *pEnd;
+ int iOp = sqlite3VdbeCurrentAddr(v);
+ int iEnd;
nArg = pWin->pOwner->x.pList->nExpr;
regArg = sqlite3GetTempRange(pParse, nArg);
sqlite3ExprCodeExprList(pParse, pWin->pOwner->x.pList, regArg, 0, 0);
- pEnd = sqlite3VdbeGetOp(v, -1);
- for(pOp=sqlite3VdbeGetOp(v, iStart); pOp<=pEnd; pOp++){
+ for(iEnd=sqlite3VdbeCurrentAddr(v); iOp<iEnd; iOp++){
+ VdbeOp *pOp = sqlite3VdbeGetOp(v, iOp);
if( pOp->opcode==OP_Column && pOp->p1==pWin->iEphCsr ){
pOp->p1 = csr;
}