diff options
author | drh <> | 2022-04-17 20:30:52 +0000 |
---|---|---|
committer | drh <> | 2022-04-17 20:30:52 +0000 |
commit | 2bd9f44a1867c7d91bebb756a998fe1dda09d8f4 (patch) | |
tree | 21b0e786a21b8286560b859c676d5b8cc7ba6c91 /src/expr.c | |
parent | fe146997650b13b4adc306dcecc9c3617d2e326a (diff) | |
download | sqlite-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.c | 12 |
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; } |