aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2015-08-20 23:21:34 +0000
committerdrh <drh@noemail.net>2015-08-20 23:21:34 +0000
commitd8b1bfc6bf2f9463c1dfc27e7c52e9207b291145 (patch)
tree36bc0fae80ab17a4ff16fdb17d0fc2dea604b7e0 /src/resolve.c
parent197d59ffc4fe46fb12dcf62bb248c102fc0d5ecf (diff)
downloadsqlite-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.c9
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;
}