aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2012-02-02 03:38:30 +0000
committerdrh <drh@noemail.net>2012-02-02 03:38:30 +0000
commit6c5351589c94536a16f4798afb5beaf415cabb9f (patch)
tree9d6d5b12db2a62b0b9c4c39b1db7564a5a3e034f /src/expr.c
parenta3cc3c961625f1499afc6178d9fdc5c1baadea23 (diff)
downloadsqlite-6c5351589c94536a16f4798afb5beaf415cabb9f.tar.gz
sqlite-6c5351589c94536a16f4798afb5beaf415cabb9f.zip
Simplified array allocation in the IdList and AggInfo objects.
FossilOrigin-Name: 25df2a7458d025bc00380b4a0893637639f9f0d4
Diffstat (limited to 'src/expr.c')
-rw-r--r--src/expr.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/expr.c b/src/expr.c
index 5034d40ae..79dd8f496 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -926,12 +926,15 @@ IdList *sqlite3IdListDup(sqlite3 *db, IdList *p){
if( p==0 ) return 0;
pNew = sqlite3DbMallocRaw(db, sizeof(*pNew) );
if( pNew==0 ) return 0;
- pNew->nId = pNew->nAlloc = p->nId;
+ pNew->nId = p->nId;
pNew->a = sqlite3DbMallocRaw(db, p->nId*sizeof(p->a[0]) );
if( pNew->a==0 ){
sqlite3DbFree(db, pNew);
return 0;
}
+ /* Note that because the size of the allocation for p->a[] is not
+ ** necessarily a power of two, sqlite3IdListAppend() may not be called
+ ** on the duplicate created by this function. */
for(i=0; i<p->nId; i++){
struct IdList_item *pNewItem = &pNew->a[i];
struct IdList_item *pOldItem = &p->a[i];
@@ -3774,9 +3777,7 @@ static int addAggInfoColumn(sqlite3 *db, AggInfo *pInfo){
db,
pInfo->aCol,
sizeof(pInfo->aCol[0]),
- 3,
&pInfo->nColumn,
- &pInfo->nColumnAlloc,
&i
);
return i;
@@ -3792,9 +3793,7 @@ static int addAggInfoFunc(sqlite3 *db, AggInfo *pInfo){
db,
pInfo->aFunc,
sizeof(pInfo->aFunc[0]),
- 3,
&pInfo->nFunc,
- &pInfo->nFuncAlloc,
&i
);
return i;