diff options
author | drh <drh@noemail.net> | 2020-01-04 15:21:47 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2020-01-04 15:21:47 +0000 |
commit | f6ea97ea3d278c212ef366e255051e52ca352332 (patch) | |
tree | 5be684272a2ae657c6aff18870acf86295d6e3a9 /src/expr.c | |
parent | 4549a3b8cb6d776dc7023580ded18a8158dccc9e (diff) | |
download | sqlite-f6ea97ea3d278c212ef366e255051e52ca352332.tar.gz sqlite-f6ea97ea3d278c212ef366e255051e52ca352332.zip |
Fix a false-positive in the register validity tracking logic by moving the
temporary register release call before the jump that uses that temporary
register.
FossilOrigin-Name: 9da48a5ca66dc67c8f7fb2d2471dac7ea696e35ecba5ddf65747d08d452436c1
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/expr.c b/src/expr.c index 0c4a61175..a89730fe9 100644 --- a/src/expr.c +++ b/src/expr.c @@ -3209,6 +3209,7 @@ static void sqlite3ExprCodeIN( if( regCkNull && sqlite3ExprCanBeNull(pList->a[ii].pExpr) ){ sqlite3VdbeAddOp3(v, OP_BitAnd, regCkNull, r2, regCkNull); } + sqlite3ReleaseTempReg(pParse, regToFree); if( ii<pList->nExpr-1 || destIfNull!=destIfFalse ){ int op = rLhs!=r2 ? OP_Eq : OP_NotNull; sqlite3VdbeAddOp4(v, op, rLhs, labelOk, r2, @@ -3227,7 +3228,6 @@ static void sqlite3ExprCodeIN( VdbeCoverageIf(v, op==OP_IsNull); sqlite3VdbeChangeP5(v, zAff[0] | SQLITE_JUMPIFNULL); } - sqlite3ReleaseTempReg(pParse, regToFree); } if( regCkNull ){ sqlite3VdbeAddOp2(v, OP_IsNull, regCkNull, destIfNull); VdbeCoverage(v); |