diff options
author | drh <> | 2022-07-23 00:44:44 +0000 |
---|---|---|
committer | drh <> | 2022-07-23 00:44:44 +0000 |
commit | ee6b80c3b50efb65630584eb9001d2771055ff8d (patch) | |
tree | 9220a1172784fffee25fcd7cb5a11d99f55f474f /src/expr.c | |
parent | 825fa17b1f220e9ba45757251becdde41958ae8e (diff) | |
download | sqlite-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/expr.c')
-rw-r--r-- | src/expr.c | 6 |
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]=='\'' ); |