aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2022-07-23 00:44:44 +0000
committerdrh <>2022-07-23 00:44:44 +0000
commitee6b80c3b50efb65630584eb9001d2771055ff8d (patch)
tree9220a1172784fffee25fcd7cb5a11d99f55f474f /src
parent825fa17b1f220e9ba45757251becdde41958ae8e (diff)
downloadsqlite-ee6b80c3b50efb65630584eb9001d2771055ff8d.tar.gz
sqlite-ee6b80c3b50efb65630584eb9001d2771055ff8d.zip
Use sqlite3ParserAddCleanup() rather than pParse->pConstExpr to implement
sqlite3ExprDeferredDelete(). This is a better solution than check-in [c538d07535092722]. FossilOrigin-Name: 2a6f6971fa010219323b976ff53b2606e39fb43fd36c394837c3a8528bf3c425
Diffstat (limited to 'src')
-rw-r--r--src/expr.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/expr.c b/src/expr.c
index 3801fb98f..8edab3298 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -1270,8 +1270,9 @@ void sqlite3ClearOnOrUsing(sqlite3 *db, OnOrUsing *p){
** pExpr to the pParse->pConstExpr list with a register number of 0.
*/
void sqlite3ExprDeferredDelete(Parse *pParse, Expr *pExpr){
- pParse->pConstExpr =
- sqlite3ExprListAppend(pParse, pParse->pConstExpr, pExpr);
+ sqlite3ParserAddCleanup(pParse,
+ (void(*)(sqlite3*,void*))sqlite3ExprDelete,
+ pExpr);
}
/* Invoke sqlite3RenameExprUnmap() and sqlite3ExprDelete() on the
@@ -4207,7 +4208,6 @@ expr_code_doover:
int n;
const char *z;
char *zBlob;
- if( pParse->nErr ) return target;
assert( !ExprHasProperty(pExpr, EP_IntValue) );
assert( pExpr->u.zToken[0]=='x' || pExpr->u.zToken[0]=='X' );
assert( pExpr->u.zToken[1]=='\'' );