aboutsummaryrefslogtreecommitdiff
path: root/src/sqliteInt.h
diff options
context:
space:
mode:
authordrh <>2021-03-31 13:31:33 +0000
committerdrh <>2021-03-31 13:31:33 +0000
commitb3ad4e611854dd5f4ad26378c4cfccf9f0c858dd (patch)
tree90a34dd0350c25af32bd33caca8e8d8edcdb42b6 /src/sqliteInt.h
parentb03786ad6e89e1b38d94dfe9ca48aee921a97196 (diff)
downloadsqlite-b3ad4e611854dd5f4ad26378c4cfccf9f0c858dd.tar.gz
sqlite-b3ad4e611854dd5f4ad26378c4cfccf9f0c858dd.zip
Defer deletion of expressions that are optimized out by the AND optimizer
in the sqlite3ExprAnd() routine until the corresponding Parse object is deleted. This avoids a dangling pointer in AggInfo if sqlite3ExprAnd() is invoked by the push-down optimization. The dangling pointer appears to be harmless in release builds, only showing up in debug builds. Problem found by dbsqlfuzz. FossilOrigin-Name: c36b43589abd9f62a709bdb47b8748e0c1e8743487a3d83d1eb35eb06b65d763
Diffstat (limited to 'src/sqliteInt.h')
-rw-r--r--src/sqliteInt.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index 09a692d1b..fcc50e157 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -4287,6 +4287,7 @@ Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*, int);
void sqlite3ExprFunctionUsable(Parse*,Expr*,FuncDef*);
void sqlite3ExprAssignVarNumber(Parse*, Expr*, u32);
void sqlite3ExprDelete(sqlite3*, Expr*);
+void sqlite3ExprDeferredDelete(Parse*, Expr*);
void sqlite3ExprUnmapAndDelete(Parse*, Expr*);
ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*);
ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*);