diff options
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/resolve.c b/src/resolve.c index b763a809f..d913a24c8 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -87,7 +87,13 @@ static void resolveAlias( pDup->pColl = pExpr->pColl; pDup->flags |= EP_ExpCollate; } - sqlite3ExprClear(db, pExpr); + + /* Before calling sqlite3ExprDelete(), set the EP_Static flag. This + ** prevents ExprDelete() from deleting the Expr structure itself, + ** allowing it to be repopulated by the memcpy() on the following line. + */ + ExprSetProperty(pExpr, EP_Static); + sqlite3ExprDelete(db, pExpr); memcpy(pExpr, pDup, sizeof(*pExpr)); sqlite3DbFree(db, pDup); } |