aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <>2022-04-17 20:30:52 +0000
committerdrh <>2022-04-17 20:30:52 +0000
commit2bd9f44a1867c7d91bebb756a998fe1dda09d8f4 (patch)
tree21b0e786a21b8286560b859c676d5b8cc7ba6c91 /src/expr.c
parentfe146997650b13b4adc306dcecc9c3617d2e326a (diff)
downloadsqlite-2bd9f44a1867c7d91bebb756a998fe1dda09d8f4.tar.gz
sqlite-2bd9f44a1867c7d91bebb756a998fe1dda09d8f4.zip
Change OP_Return such that if P3 is 1, the Return is a no-op when the
P1 register contains a NULL. FossilOrigin-Name: c90602328a4b26f06d76c5343d29ebb7a782186c86ea88f5965a41040cff5346
Diffstat (limited to 'src/expr.c')
-rw-r--r--src/expr.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/expr.c b/src/expr.c
index 4e036c934..b90d537d8 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -3175,9 +3175,9 @@ void sqlite3CodeRhsOfIN(
assert( ExprUseYSub(pExpr) );
assert( sqlite3VdbeGetOp(v,pExpr->y.sub.iAddr-1)->opcode==OP_BeginSubrtn
|| pParse->nErr );
- sqlite3VdbeAddOp2(v, OP_Return, pExpr->y.sub.regReturn,
- pExpr->y.sub.iAddr);
- sqlite3VdbeChangeP1(v, pExpr->y.sub.iAddr-1, sqlite3VdbeCurrentAddr(v)-1);
+ sqlite3VdbeAddOp3(v, OP_Return, pExpr->y.sub.regReturn,
+ pExpr->y.sub.iAddr, 1);
+ VdbeCoverage(v);
sqlite3ClearTempRegCache(pParse);
}
}
@@ -3306,9 +3306,9 @@ int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
assert( ExprUseYSub(pExpr) );
assert( sqlite3VdbeGetOp(v,pExpr->y.sub.iAddr-1)->opcode==OP_BeginSubrtn
|| pParse->nErr );
- sqlite3VdbeAddOp2(v, OP_Return, pExpr->y.sub.regReturn,
- pExpr->y.sub.iAddr);
- sqlite3VdbeChangeP1(v, pExpr->y.sub.iAddr-1, sqlite3VdbeCurrentAddr(v)-1);
+ sqlite3VdbeAddOp3(v, OP_Return, pExpr->y.sub.regReturn,
+ pExpr->y.sub.iAddr, 1);
+ VdbeCoverage(v);
sqlite3ClearTempRegCache(pParse);
return rReg;
}