diff options
author | drh <drh@noemail.net> | 2008-10-11 16:47:35 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2008-10-11 16:47:35 +0000 |
commit | 10fe840e4dbce702b4d24aa47c61710a97fb673c (patch) | |
tree | 0d473a718dec7042a0dfb7fd0754b053878edd96 /src/resolve.c | |
parent | 4150ebf86fd9935a19dbdc67bdd72e45a1d46a13 (diff) | |
download | sqlite-10fe840e4dbce702b4d24aa47c61710a97fb673c.tar.gz sqlite-10fe840e4dbce702b4d24aa47c61710a97fb673c.zip |
Fix a memory leak on ORDER BY of a compound select caused by the resolver
on a flattened query. Also fix a OOM segfault in WHERE clause processing. (CVS 5801)
FossilOrigin-Name: d2c252d6bbde4ae14da6c9e6c2683d763d11c59f
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/resolve.c b/src/resolve.c index 10bbf481a..3f3ac939f 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -14,7 +14,7 @@ ** resolve all identifiers by associating them with a particular ** table and column. ** -** $Id: resolve.c,v 1.8 2008/10/10 04:34:16 shane Exp $ +** $Id: resolve.c,v 1.9 2008/10/11 16:47:36 drh Exp $ */ #include "sqliteInt.h" #include <stdlib.h> @@ -77,8 +77,7 @@ static void resolveAlias( pDup->pColl = pExpr->pColl; pDup->flags |= EP_ExpCollate; } - if( pExpr->span.dyn ) sqlite3DbFree(db, (char*)pExpr->span.z); - if( pExpr->token.dyn ) sqlite3DbFree(db, (char*)pExpr->token.z); + sqlite3ExprClear(db, pExpr); memcpy(pExpr, pDup, sizeof(*pExpr)); sqlite3DbFree(db, pDup); } |