1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-08 03:22:21 +03:00

Fix a segfault associated with the column cache that occurs on nested VIEWs.

Ticket #3527. (CVS 5989)

FossilOrigin-Name: 490138a2012fcb4c859e1cf12a35e314ec1060d2
This commit is contained in:
drh
2008-12-08 13:42:36 +00:00
parent bbce338412
commit 555f8de7ef
5 changed files with 136 additions and 12 deletions

View File

@@ -12,7 +12,7 @@
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
** $Id: expr.c,v 1.405 2008/12/05 15:24:17 drh Exp $
** $Id: expr.c,v 1.406 2008/12/08 13:42:36 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -1725,10 +1725,14 @@ void sqlite3ExprHardCopy(Parse *pParse, int iReg, int nReg){
static int codeAlias(Parse *pParse, int iAlias, Expr *pExpr, int target){
sqlite3 *db = pParse->db;
int iReg;
if( pParse->aAlias==0 ){
pParse->aAlias = sqlite3DbMallocZero(db,
if( pParse->nAliasAlloc<pParse->nAlias ){
pParse->aAlias = sqlite3DbReallocOrFree(db, pParse->aAlias,
sizeof(pParse->aAlias[0])*pParse->nAlias );
testcase( db->mallocFailed && pParse->nAliasAlloc>0 );
if( db->mallocFailed ) return 0;
memset(&pParse->aAlias[pParse->nAliasAlloc], 0,
(pParse->nAlias-pParse->nAliasAlloc)*sizeof(pParse->aAlias[0]));
pParse->nAliasAlloc = pParse->nAlias;
}
assert( iAlias>0 && iAlias<=pParse->nAlias );
iReg = pParse->aAlias[iAlias-1];