aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2015-08-20 20:13:37 +0000
committerdrh <drh@noemail.net>2015-08-20 20:13:37 +0000
commitd10dbad5e1e0a516b6fa0fcf9419fc92d71165af (patch)
tree359105de9fc07a0404a0258902ce8594a0b8d00e /src
parent7fcdd06949d63b23ba756b2377fa466e136dd72d (diff)
downloadsqlite-d10dbad5e1e0a516b6fa0fcf9419fc92d71165af.tar.gz
sqlite-d10dbad5e1e0a516b6fa0fcf9419fc92d71165af.zip
Correctly handle empty function argument lists on table-valued functions.
FossilOrigin-Name: a7acc7878b8bb8e27a0da67b2dbb7bd51df4859b
Diffstat (limited to 'src')
-rw-r--r--src/build.c2
-rw-r--r--src/resolve.c8
2 files changed, 6 insertions, 4 deletions
diff --git a/src/build.c b/src/build.c
index 96dc03a82..6a5b50b0d 100644
--- a/src/build.c
+++ b/src/build.c
@@ -3802,7 +3802,7 @@ void sqlite3SrcListIndexedBy(Parse *pParse, SrcList *p, Token *pIndexedBy){
** table-valued-function.
*/
void sqlite3SrcListFuncArgs(Parse *pParse, SrcList *p, ExprList *pList){
- if( p && ALWAYS(p->nSrc>0) ){
+ if( p && ALWAYS(p->nSrc>0) && pList ){
struct SrcList_item *pItem = &p->a[p->nSrc-1];
assert( pItem->fg.notIndexed==0 );
assert( pItem->fg.isIndexedBy==0 );
diff --git a/src/resolve.c b/src/resolve.c
index 72d5f319c..9799a136b 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -1451,9 +1451,11 @@ int sqlite3ResolveExprListNames(
NameContext *pNC, /* Namespace to resolve expressions in. */
ExprList *pList /* The expression list to be analyzed. */
){
- int i;
- for(i=0; i<pList->nExpr; i++){
- if( sqlite3ResolveExprNames(pNC, pList->a[i].pExpr) ) return WRC_Abort;
+ if( pList ){
+ int i;
+ for(i=0; i<pList->nExpr; i++){
+ if( sqlite3ResolveExprNames(pNC, pList->a[i].pExpr) ) return WRC_Abort;
+ }
}
return WRC_Continue;
}