diff options
author | drh <drh@noemail.net> | 2015-08-20 23:21:34 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2015-08-20 23:21:34 +0000 |
commit | d8b1bfc6bf2f9463c1dfc27e7c52e9207b291145 (patch) | |
tree | 36bc0fae80ab17a4ff16fdb17d0fc2dea604b7e0 /src/resolve.c | |
parent | 197d59ffc4fe46fb12dcf62bb248c102fc0d5ecf (diff) | |
download | sqlite-d8b1bfc6bf2f9463c1dfc27e7c52e9207b291145.tar.gz sqlite-d8b1bfc6bf2f9463c1dfc27e7c52e9207b291145.zip |
Fix corner-case memory management issues in table-valued functions. Change
virtual table handling so that if xDestroy is missing the table is
eponymous only even if xCreate is present.
FossilOrigin-Name: 774e6a14b124bbae4da0e188b62aee9ffb8c3745
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/resolve.c b/src/resolve.c index 9799a136b..0908d4cd5 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -1451,11 +1451,10 @@ int sqlite3ResolveExprListNames( NameContext *pNC, /* Namespace to resolve expressions in. */ ExprList *pList /* The expression list to be analyzed. */ ){ - if( pList ){ - int i; - for(i=0; i<pList->nExpr; i++){ - if( sqlite3ResolveExprNames(pNC, pList->a[i].pExpr) ) return WRC_Abort; - } + assert( pList!=0 ); + int i; + for(i=0; i<pList->nExpr; i++){ + if( sqlite3ResolveExprNames(pNC, pList->a[i].pExpr) ) return WRC_Abort; } return WRC_Continue; } |