diff options
author | dan <Dan Kennedy> | 2021-04-06 18:40:27 +0000 |
---|---|---|
committer | dan <Dan Kennedy> | 2021-04-06 18:40:27 +0000 |
commit | 5a9fd231eabc51b95ab6896d6f8268f643bf8efd (patch) | |
tree | 4ca220e5a061ec1bff89d8f8ff4f0ff19f4979ec /src/window.c | |
parent | 112501fec22d65d7bfd016b3f9383f2e7211e6b6 (diff) | |
download | sqlite-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.c | 8 |
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; } |