1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Split off sqlite3DbFreeNN() from sqlite3DbFree() and use it in cases where

we know that the argument to be freed is never NULL.

FossilOrigin-Name: ad90e8bb5e47945607c8fb47b6ade8cfc52a9b684805cc40132629be0ecc14cc
This commit is contained in:
drh
2017-04-05 12:39:49 +00:00
parent ac48b751e2
commit dbd6a7dc06
12 changed files with 59 additions and 53 deletions

View File

@@ -1,5 +1,5 @@
C Save\sa\sfew\sbytes\sand\sa\sfew\sCPU\scycles\sin\ssqlite3ExprListDelete()\sroutine. C Split\soff\ssqlite3DbFreeNN()\sfrom\ssqlite3DbFree()\sand\suse\sit\sin\scases\swhere\nwe\sknow\sthat\sthe\sargument\sto\sbe\sfreed\sis\snever\sNULL.
D 2017-04-05T11:57:56.171 D 2017-04-05T12:39:49.042
F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc a4c0613a18663bda56d8cf76079ab6590a7c3602e54befb4bbdef76bcaa38b6a F Makefile.msc a4c0613a18663bda56d8cf76079ab6590a7c3602e54befb4bbdef76bcaa38b6a
@@ -347,14 +347,14 @@ F src/btmutex.c 0e9ce2d56159b89b9bc8e197e023ee11e39ff8ca
F src/btree.c 24ae5472bd0b53b4130ecdda389deb621af721d1fcb50890b878102b00bd10fa F src/btree.c 24ae5472bd0b53b4130ecdda389deb621af721d1fcb50890b878102b00bd10fa
F src/btree.h bf64dfeeddeebdb775a5eba0098bbc00d073290d F src/btree.h bf64dfeeddeebdb775a5eba0098bbc00d073290d
F src/btreeInt.h a392d353104b4add58b4a59cb185f5d5693dde832c565b77d8d4c343ed98f610 F src/btreeInt.h a392d353104b4add58b4a59cb185f5d5693dde832c565b77d8d4c343ed98f610
F src/build.c 43f903c9082040ced2b421543cb0300c2973647d F src/build.c 4026a9c554b233e50c5e9ad46963e676cf54dd2306d952aa1eaa07a1bc9ce14f
F src/callback.c 2e76147783386374bf01b227f752c81ec872d730 F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
F src/ctime.c 47d91a25ad8f199a71a5b1b7b169d6dd0d6e98c5719eca801568798743d1161c F src/ctime.c 47d91a25ad8f199a71a5b1b7b169d6dd0d6e98c5719eca801568798743d1161c
F src/date.c ee676e7694dfadbdd2fde1a258a71be8360ba5ae F src/date.c ee676e7694dfadbdd2fde1a258a71be8360ba5ae
F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
F src/delete.c 0d9d5549d42e79ce4d82ff1db1e6c81e36d2f67c F src/delete.c 0d9d5549d42e79ce4d82ff1db1e6c81e36d2f67c
F src/expr.c 15f245fd12596cd86027e1f8d15ba670ffb954189696cd529bbc399f2b5ee473 F src/expr.c 6bce2cbdd822963cf28e782938a96274cc37f18ac28dec7a4e35ccac09f66ce8
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 2e9aabe1aee76273aff8a84ee92c464e095400ae F src/fkey.c 2e9aabe1aee76273aff8a84ee92c464e095400ae
F src/func.c 9d52522cc8ae7f5cdadfe14594262f1618bc1f86083c4cd6da861b4cf5af6174 F src/func.c 9d52522cc8ae7f5cdadfe14594262f1618bc1f86083c4cd6da861b4cf5af6174
@@ -367,7 +367,7 @@ F src/insert.c d4bb3a135948553d18cf992f76f7ed7b18aa0327f250607b5a6671e55d9947d5
F src/legacy.c e88ed13c2d531decde75d42c2e35623fb9ce3cb0 F src/legacy.c e88ed13c2d531decde75d42c2e35623fb9ce3cb0
F src/loadext.c a72909474dadce771d3669bf84bf689424f6f87d471fee898589c3ef9b2acfd9 F src/loadext.c a72909474dadce771d3669bf84bf689424f6f87d471fee898589c3ef9b2acfd9
F src/main.c 158326243c5ddc8b98a1e983fa488650cf76d760 F src/main.c 158326243c5ddc8b98a1e983fa488650cf76d760
F src/malloc.c 89c98e3619d362dcffa5c1c639b364b65b474751 F src/malloc.c e20bb2b48abec52d3faf01cce12e8b4f95973755fafec98d45162dfdab111978
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
F src/mem2.c f1940d9e91948dd6a908fbb9ce3835c36b5d83c3 F src/mem2.c f1940d9e91948dd6a908fbb9ce3835c36b5d83c3
@@ -401,12 +401,12 @@ F src/printf.c 8757834f1b54dae512fb25eb1acc8e94a0d15dd2290b58f2563f65973265adb2
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384 F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
F src/resolve.c 3e518b962d932a997fae373366880fc028c75706 F src/resolve.c 3e518b962d932a997fae373366880fc028c75706
F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
F src/select.c bbcfd919d795ba4796859aeaf2a202d9e0138fbfb5aa6c35fee816343cd82995 F src/select.c afcf31d8ed7c890328a31d3f350467ccd273af345b24562382b398d6d9cd0664
F src/shell.c ceb2b2f1f958ea2c47a7f37972d0f715fbf9dcf6a34a5e98c886b85e3ce6a238 F src/shell.c ceb2b2f1f958ea2c47a7f37972d0f715fbf9dcf6a34a5e98c886b85e3ce6a238
F src/sqlite.h.in 723107d97f2345a7c103632169dc61366121c4ab65d75a7d83c6dc0e5bbe5ca4 F src/sqlite.h.in 723107d97f2345a7c103632169dc61366121c4ab65d75a7d83c6dc0e5bbe5ca4
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 58fd0676d3111d02e62e5a35992a7d3da5d3f88753acc174f2d37b774fbbdd28 F src/sqlite3ext.h 58fd0676d3111d02e62e5a35992a7d3da5d3f88753acc174f2d37b774fbbdd28
F src/sqliteInt.h c5e83040837328293dfec3b89923300591ed1de6ac3d073818d414b55c0e21a0 F src/sqliteInt.h 6cf244eb06119b44e155717708e54f0638c35e9bd8ef59ea570eb1f093f0da44
F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1 F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34 F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
@@ -461,20 +461,20 @@ F src/test_windirent.c 17f91f5f2aa1bb7328abb49414c363b5d2a9d3ff
F src/test_windirent.h 5d67483a55442e31e1bde0f4a230e6e932ad5906 F src/test_windirent.h 5d67483a55442e31e1bde0f4a230e6e932ad5906
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
F src/tokenize.c de2ec4fed5aa9770791be7528a08597a77a36b2ffbbeb0c2cb6951e80357730b F src/tokenize.c 1003d6d90c6783206c711f0a9397656fa5b055209f4d092caa43bb3bf5215db5
F src/treeview.c 84d0ac737e1231702679f0289180021e19c5cc186ec413e8dcb704a887c76ec8 F src/treeview.c 84d0ac737e1231702679f0289180021e19c5cc186ec413e8dcb704a887c76ec8
F src/trigger.c c9f0810043b265724fdb1bdd466894f984dfc182 F src/trigger.c c9f0810043b265724fdb1bdd466894f984dfc182
F src/update.c 456d4a4656f8a03c2abc88a51b19172197400e58 F src/update.c 456d4a4656f8a03c2abc88a51b19172197400e58
F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
F src/util.c ca8440ede81e155d15cff7c101654f60b55a9ae6 F src/util.c ca8440ede81e155d15cff7c101654f60b55a9ae6
F src/vacuum.c 1fe4555cd8c9b263afb85b5b4ee3a4a4181ad569 F src/vacuum.c 1fe4555cd8c9b263afb85b5b4ee3a4a4181ad569
F src/vdbe.c 1be564c66097e8982229bbc4d3de3042427dfdff0e5e7b7287bf7531faf474bf F src/vdbe.c b070c9c81a5faff5d9fc9563c7c030e3e1adb69d835259470fd945ef61f3f9fb
F src/vdbe.h caa5346d52bae2a3c8c1dcfa60a7a4dc878a9e3865cb8239da55808b316c8158 F src/vdbe.h caa5346d52bae2a3c8c1dcfa60a7a4dc878a9e3865cb8239da55808b316c8158
F src/vdbeInt.h 5db089ce18c4feff8820ec6e4cac2d2c82e03d4b1d96f10a6e43832147b8dffe F src/vdbeInt.h 5db089ce18c4feff8820ec6e4cac2d2c82e03d4b1d96f10a6e43832147b8dffe
F src/vdbeapi.c 5b08d82592bcff4470601fe78aaabebd50837860 F src/vdbeapi.c 5b08d82592bcff4470601fe78aaabebd50837860
F src/vdbeaux.c 514eb1749346b1e587fbeb775198ed9385476d5639bc81aef42914e2fe70962d F src/vdbeaux.c 0ecacf8c7ca93e430b30819b8fc9b2c1ffe88202d1437e88c08a1f0b6159c58c
F src/vdbeblob.c 359891617358deefc85bef7bcf787fa6b77facb9 F src/vdbeblob.c 359891617358deefc85bef7bcf787fa6b77facb9
F src/vdbemem.c bbd8f5fdb7f11e02d9a6201f18a52325f1d2361a2850ff03a38f8efa5188f2dc F src/vdbemem.c 8bb4dd22837da969bfda25ef3f92d41aaad192328f89a0951290d5e26ad7dbc4
F src/vdbesort.c e72fe02a2121386ba767ede8942e9450878b8fc873abf3d1b6824485f092570c F src/vdbesort.c e72fe02a2121386ba767ede8942e9450878b8fc873abf3d1b6824485f092570c
F src/vdbetrace.c 41963d5376f0349842b5fc4aaaaacd7d9cdc0834 F src/vdbetrace.c 41963d5376f0349842b5fc4aaaaacd7d9cdc0834
F src/vtab.c 007513c2ef52472fcdea6a741683d50662e82790 F src/vtab.c 007513c2ef52472fcdea6a741683d50662e82790
@@ -482,7 +482,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
F src/wal.c 40c543f0a2195d1b0dc88ef12142bea690009344 F src/wal.c 40c543f0a2195d1b0dc88ef12142bea690009344
F src/wal.h 06b2a0b599cc0f53ea97f497cf8c6b758c999f71 F src/wal.h 06b2a0b599cc0f53ea97f497cf8c6b758c999f71
F src/walker.c b71a992b413b3a022572eccf29ef4b4890223791 F src/walker.c b71a992b413b3a022572eccf29ef4b4890223791
F src/where.c aed99e51153930ce30a6b25968fa61fabdc0160f6198e01ed3d108e9dbb49a15 F src/where.c 49b48b720184fdde747c468d7270feeb1b88c6a71092cea3a1aa168dc8ac0b0f
F src/whereInt.h 2d50c2b74a33be44cb68fdecee30b4d93552f1f4 F src/whereInt.h 2d50c2b74a33be44cb68fdecee30b4d93552f1f4
F src/wherecode.c 677e95413c472c0b413023b6b69a47f40fce1b04 F src/wherecode.c 677e95413c472c0b413023b6b69a47f40fce1b04
F src/whereexpr.c 130cdd1a43af71b19755270fb1224874cf55158c F src/whereexpr.c 130cdd1a43af71b19755270fb1224874cf55158c
@@ -1570,7 +1570,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P a1cf44763277b6c745b5b5509ca9129b6c3231608b4d1c8aec2815b64b5a2a07 P 9e6c939144a129b36bb119120442a4a021e00187783da211315d4bb13acd7c3a
R 4d8790f73d530cb376a3a651b6d64ad6 R 17c5231ecc5d3d35525c3418d3d62ff7
U drh U drh
Z 8197639d1fc47aadec64571253c4a3bb Z d994bdccf4db8bedaee3d7cb7c3b925e

View File

@@ -1 +1 @@
9e6c939144a129b36bb119120442a4a021e00187783da211315d4bb13acd7c3a ad90e8bb5e47945607c8fb47b6ade8cfc52a9b684805cc40132629be0ecc14cc

View File

@@ -3623,7 +3623,7 @@ void sqlite3IdListDelete(sqlite3 *db, IdList *pList){
sqlite3DbFree(db, pList->a[i].zName); sqlite3DbFree(db, pList->a[i].zName);
} }
sqlite3DbFree(db, pList->a); sqlite3DbFree(db, pList->a);
sqlite3DbFree(db, pList); sqlite3DbFreeNN(db, pList);
} }
/* /*
@@ -3813,7 +3813,7 @@ void sqlite3SrcListDelete(sqlite3 *db, SrcList *pList){
sqlite3ExprDelete(db, pItem->pOn); sqlite3ExprDelete(db, pItem->pOn);
sqlite3IdListDelete(db, pItem->pUsing); sqlite3IdListDelete(db, pItem->pUsing);
} }
sqlite3DbFree(db, pList); sqlite3DbFreeNN(db, pList);
} }
/* /*

View File

@@ -1038,7 +1038,7 @@ static SQLITE_NOINLINE void sqlite3ExprDeleteNN(sqlite3 *db, Expr *p){
} }
if( ExprHasProperty(p, EP_MemToken) ) sqlite3DbFree(db, p->u.zToken); if( ExprHasProperty(p, EP_MemToken) ) sqlite3DbFree(db, p->u.zToken);
if( !ExprHasProperty(p, EP_Static) ){ if( !ExprHasProperty(p, EP_Static) ){
sqlite3DbFree(db, p); sqlite3DbFreeNN(db, p);
} }
} }
void sqlite3ExprDelete(sqlite3 *db, Expr *p){ void sqlite3ExprDelete(sqlite3 *db, Expr *p){
@@ -1400,7 +1400,7 @@ IdList *sqlite3IdListDup(sqlite3 *db, IdList *p){
pNew->nId = p->nId; pNew->nId = p->nId;
pNew->a = sqlite3DbMallocRawNN(db, p->nId*sizeof(p->a[0]) ); pNew->a = sqlite3DbMallocRawNN(db, p->nId*sizeof(p->a[0]) );
if( pNew->a==0 ){ if( pNew->a==0 ){
sqlite3DbFree(db, pNew); sqlite3DbFreeNN(db, pNew);
return 0; return 0;
} }
/* Note that because the size of the allocation for p->a[] is not /* Note that because the size of the allocation for p->a[] is not
@@ -1665,7 +1665,7 @@ static SQLITE_NOINLINE void exprListDeleteNN(sqlite3 *db, ExprList *pList){
sqlite3DbFree(db, pItem->zSpan); sqlite3DbFree(db, pItem->zSpan);
pItem++; pItem++;
}while( --i>0 ); }while( --i>0 );
sqlite3DbFree(db, pList); sqlite3DbFreeNN(db, pList);
} }
void sqlite3ExprListDelete(sqlite3 *db, ExprList *pList){ void sqlite3ExprListDelete(sqlite3 *db, ExprList *pList){
if( pList ) exprListDeleteNN(db, pList); if( pList ) exprListDeleteNN(db, pList);

View File

@@ -474,11 +474,12 @@ static SQLITE_NOINLINE void measureAllocationSize(sqlite3 *db, void *p){
/* /*
** Free memory that might be associated with a particular database ** Free memory that might be associated with a particular database
** connection. ** connection. Calling sqlite3DbFree(D,X) for X==0 is a harmless no-op.
** The sqlite3DbFreeNN(D,X) version requires that X be non-NULL.
*/ */
void sqlite3DbFree(sqlite3 *db, void *p){ void sqlite3DbFreeNN(sqlite3 *db, void *p){
assert( db==0 || sqlite3_mutex_held(db->mutex) ); assert( db==0 || sqlite3_mutex_held(db->mutex) );
if( p==0 ) return; assert( p!=0 );
if( db ){ if( db ){
if( db->pnBytesFreed ){ if( db->pnBytesFreed ){
measureAllocationSize(db, p); measureAllocationSize(db, p);
@@ -502,6 +503,10 @@ void sqlite3DbFree(sqlite3 *db, void *p){
sqlite3MemdebugSetType(p, MEMTYPE_HEAP); sqlite3MemdebugSetType(p, MEMTYPE_HEAP);
sqlite3_free(p); sqlite3_free(p);
} }
void sqlite3DbFree(sqlite3 *db, void *p){
assert( db==0 || sqlite3_mutex_held(db->mutex) );
if( p ) sqlite3DbFreeNN(db, p);
}
/* /*
** Change the size of an existing memory allocation ** Change the size of an existing memory allocation

View File

@@ -76,7 +76,7 @@ static void clearSelect(sqlite3 *db, Select *p, int bFree){
sqlite3ExprDelete(db, p->pLimit); sqlite3ExprDelete(db, p->pLimit);
sqlite3ExprDelete(db, p->pOffset); sqlite3ExprDelete(db, p->pOffset);
if( p->pWith ) sqlite3WithDelete(db, p->pWith); if( p->pWith ) sqlite3WithDelete(db, p->pWith);
if( bFree ) sqlite3DbFree(db, p); if( bFree ) sqlite3DbFreeNN(db, p);
p = pPrior; p = pPrior;
bFree = 1; bFree = 1;
} }
@@ -1055,7 +1055,7 @@ void sqlite3KeyInfoUnref(KeyInfo *p){
if( p ){ if( p ){
assert( p->nRef>0 ); assert( p->nRef>0 );
p->nRef--; p->nRef--;
if( p->nRef==0 ) sqlite3DbFree(p->db, p); if( p->nRef==0 ) sqlite3DbFreeNN(p->db, p);
} }
} }

View File

@@ -3477,6 +3477,7 @@ void *sqlite3Realloc(void*, u64);
void *sqlite3DbReallocOrFree(sqlite3 *, void *, u64); void *sqlite3DbReallocOrFree(sqlite3 *, void *, u64);
void *sqlite3DbRealloc(sqlite3 *, void *, u64); void *sqlite3DbRealloc(sqlite3 *, void *, u64);
void sqlite3DbFree(sqlite3*, void*); void sqlite3DbFree(sqlite3*, void*);
void sqlite3DbFreeNN(sqlite3*, void*);
int sqlite3MallocSize(void*); int sqlite3MallocSize(void*);
int sqlite3DbMallocSize(sqlite3*, void*); int sqlite3DbMallocSize(sqlite3*, void*);
void *sqlite3ScratchMalloc(int); void *sqlite3ScratchMalloc(int);

View File

@@ -604,7 +604,7 @@ int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzErrMsg){
while( pParse->pAinc ){ while( pParse->pAinc ){
AutoincInfo *p = pParse->pAinc; AutoincInfo *p = pParse->pAinc;
pParse->pAinc = p->pNext; pParse->pAinc = p->pNext;
sqlite3DbFree(db, p); sqlite3DbFreeNN(db, p);
} }
while( pParse->pZombieTab ){ while( pParse->pZombieTab ){
Table *p = pParse->pZombieTab; Table *p = pParse->pZombieTab;

View File

@@ -4076,7 +4076,7 @@ case OP_Found: { /* jump, in3 */
} }
} }
rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, pIdxKey, 0, 0, &res); rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, pIdxKey, 0, 0, &res);
if( pFree ) sqlite3DbFree(db, pFree); if( pFree ) sqlite3DbFreeNN(db, pFree);
if( rc!=SQLITE_OK ){ if( rc!=SQLITE_OK ){
goto abort_due_to_error; goto abort_due_to_error;
} }
@@ -5594,7 +5594,7 @@ case OP_ParseSchema: {
assert( !db->mallocFailed ); assert( !db->mallocFailed );
rc = sqlite3_exec(db, zSql, sqlite3InitCallback, &initData, 0); rc = sqlite3_exec(db, zSql, sqlite3InitCallback, &initData, 0);
if( rc==SQLITE_OK ) rc = initData.rc; if( rc==SQLITE_OK ) rc = initData.rc;
sqlite3DbFree(db, zSql); sqlite3DbFreeNN(db, zSql);
db->init.busy = 0; db->init.busy = 0;
} }
} }

View File

@@ -811,7 +811,7 @@ void sqlite3VdbeJumpHere(Vdbe *p, int addr){
*/ */
static void freeEphemeralFunction(sqlite3 *db, FuncDef *pDef){ static void freeEphemeralFunction(sqlite3 *db, FuncDef *pDef){
if( (pDef->funcFlags & SQLITE_FUNC_EPHEM)!=0 ){ if( (pDef->funcFlags & SQLITE_FUNC_EPHEM)!=0 ){
sqlite3DbFree(db, pDef); sqlite3DbFreeNN(db, pDef);
} }
} }
@@ -822,11 +822,11 @@ static void vdbeFreeOpArray(sqlite3 *, Op *, int);
*/ */
static SQLITE_NOINLINE void freeP4Mem(sqlite3 *db, Mem *p){ static SQLITE_NOINLINE void freeP4Mem(sqlite3 *db, Mem *p){
if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc); if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc);
sqlite3DbFree(db, p); sqlite3DbFreeNN(db, p);
} }
static SQLITE_NOINLINE void freeP4FuncCtx(sqlite3 *db, sqlite3_context *p){ static SQLITE_NOINLINE void freeP4FuncCtx(sqlite3 *db, sqlite3_context *p){
freeEphemeralFunction(db, p->pFunc); freeEphemeralFunction(db, p->pFunc);
sqlite3DbFree(db, p); sqlite3DbFreeNN(db, p);
} }
static void freeP4(sqlite3 *db, int p4type, void *p4){ static void freeP4(sqlite3 *db, int p4type, void *p4){
assert( db ); assert( db );
@@ -885,8 +885,8 @@ static void vdbeFreeOpArray(sqlite3 *db, Op *aOp, int nOp){
sqlite3DbFree(db, pOp->zComment); sqlite3DbFree(db, pOp->zComment);
#endif #endif
} }
sqlite3DbFreeNN(db, aOp);
} }
sqlite3DbFree(db, aOp);
} }
/* /*
@@ -1559,7 +1559,7 @@ static void releaseMemArray(Mem *p, int N){
if( p->flags&(MEM_Agg|MEM_Dyn|MEM_Frame|MEM_RowSet) ){ if( p->flags&(MEM_Agg|MEM_Dyn|MEM_Frame|MEM_RowSet) ){
sqlite3VdbeMemRelease(p); sqlite3VdbeMemRelease(p);
}else if( p->szMalloc ){ }else if( p->szMalloc ){
sqlite3DbFree(db, p->zMalloc); sqlite3DbFreeNN(db, p->zMalloc);
p->szMalloc = 0; p->szMalloc = 0;
} }
@@ -3039,7 +3039,7 @@ void sqlite3VdbeDelete(Vdbe *p){
} }
p->magic = VDBE_MAGIC_DEAD; p->magic = VDBE_MAGIC_DEAD;
p->db = 0; p->db = 0;
sqlite3DbFree(db, p); sqlite3DbFreeNN(db, p);
} }
/* /*
@@ -4598,7 +4598,7 @@ static void vdbeFreeUnpacked(sqlite3 *db, int nField, UnpackedRecord *p){
Mem *pMem = &p->aMem[i]; Mem *pMem = &p->aMem[i];
if( pMem->zMalloc ) sqlite3VdbeMemRelease(pMem); if( pMem->zMalloc ) sqlite3VdbeMemRelease(pMem);
} }
sqlite3DbFree(db, p); sqlite3DbFreeNN(db, p);
} }
} }
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */ #endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
@@ -4665,7 +4665,7 @@ void sqlite3VdbePreUpdateHook(
for(i=0; i<pCsr->nField; i++){ for(i=0; i<pCsr->nField; i++){
sqlite3VdbeMemRelease(&preupdate.aNew[i]); sqlite3VdbeMemRelease(&preupdate.aNew[i]);
} }
sqlite3DbFree(db, preupdate.aNew); sqlite3DbFreeNN(db, preupdate.aNew);
} }
} }
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */ #endif /* SQLITE_ENABLE_PREUPDATE_HOOK */

View File

@@ -131,7 +131,7 @@ SQLITE_NOINLINE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){
pMem->z = pMem->zMalloc = sqlite3DbReallocOrFree(pMem->db, pMem->z, n); pMem->z = pMem->zMalloc = sqlite3DbReallocOrFree(pMem->db, pMem->z, n);
bPreserve = 0; bPreserve = 0;
}else{ }else{
if( pMem->szMalloc>0 ) sqlite3DbFree(pMem->db, pMem->zMalloc); if( pMem->szMalloc>0 ) sqlite3DbFreeNN(pMem->db, pMem->zMalloc);
pMem->zMalloc = sqlite3DbMallocRaw(pMem->db, n); pMem->zMalloc = sqlite3DbMallocRaw(pMem->db, n);
} }
if( pMem->zMalloc==0 ){ if( pMem->zMalloc==0 ){
@@ -341,7 +341,7 @@ int sqlite3VdbeMemFinalize(Mem *pMem, FuncDef *pFunc){
ctx.pFunc = pFunc; ctx.pFunc = pFunc;
pFunc->xFinalize(&ctx); /* IMP: R-24505-23230 */ pFunc->xFinalize(&ctx); /* IMP: R-24505-23230 */
assert( (pMem->flags & MEM_Dyn)==0 ); assert( (pMem->flags & MEM_Dyn)==0 );
if( pMem->szMalloc>0 ) sqlite3DbFree(pMem->db, pMem->zMalloc); if( pMem->szMalloc>0 ) sqlite3DbFreeNN(pMem->db, pMem->zMalloc);
memcpy(pMem, &t, sizeof(t)); memcpy(pMem, &t, sizeof(t));
rc = ctx.isError; rc = ctx.isError;
} }
@@ -392,7 +392,7 @@ static SQLITE_NOINLINE void vdbeMemClear(Mem *p){
vdbeMemClearExternAndSetNull(p); vdbeMemClearExternAndSetNull(p);
} }
if( p->szMalloc ){ if( p->szMalloc ){
sqlite3DbFree(p->db, p->zMalloc); sqlite3DbFreeNN(p->db, p->zMalloc);
p->szMalloc = 0; p->szMalloc = 0;
} }
p->z = 0; p->z = 0;
@@ -1123,7 +1123,7 @@ static sqlite3_value *valueNew(sqlite3 *db, struct ValueNewStat4Ctx *p){
pRec->aMem[i].db = db; pRec->aMem[i].db = db;
} }
}else{ }else{
sqlite3DbFree(db, pRec); sqlite3DbFreeNN(db, pRec);
pRec = 0; pRec = 0;
} }
} }
@@ -1235,7 +1235,7 @@ static int valueFromFunction(
for(i=0; i<nVal; i++){ for(i=0; i<nVal; i++){
sqlite3ValueFree(apVal[i]); sqlite3ValueFree(apVal[i]);
} }
sqlite3DbFree(db, apVal); sqlite3DbFreeNN(db, apVal);
} }
*ppVal = pVal; *ppVal = pVal;
@@ -1434,7 +1434,7 @@ static void recordFunc(
putVarint32(&aRet[1], iSerial); putVarint32(&aRet[1], iSerial);
sqlite3VdbeSerialPut(&aRet[1+nSerial], argv[0], iSerial); sqlite3VdbeSerialPut(&aRet[1+nSerial], argv[0], iSerial);
sqlite3_result_blob(context, aRet, nRet, SQLITE_TRANSIENT); sqlite3_result_blob(context, aRet, nRet, SQLITE_TRANSIENT);
sqlite3DbFree(db, aRet); sqlite3DbFreeNN(db, aRet);
} }
} }
@@ -1661,7 +1661,7 @@ void sqlite3Stat4ProbeFree(UnpackedRecord *pRec){
sqlite3VdbeMemRelease(&aMem[i]); sqlite3VdbeMemRelease(&aMem[i]);
} }
sqlite3KeyInfoUnref(pRec->pKeyInfo); sqlite3KeyInfoUnref(pRec->pKeyInfo);
sqlite3DbFree(db, pRec); sqlite3DbFreeNN(db, pRec);
} }
} }
#endif /* ifdef SQLITE_ENABLE_STAT4 */ #endif /* ifdef SQLITE_ENABLE_STAT4 */
@@ -1685,7 +1685,7 @@ void sqlite3ValueSetStr(
void sqlite3ValueFree(sqlite3_value *v){ void sqlite3ValueFree(sqlite3_value *v){
if( !v ) return; if( !v ) return;
sqlite3VdbeMemRelease((Mem *)v); sqlite3VdbeMemRelease((Mem *)v);
sqlite3DbFree(((Mem*)v)->db, v); sqlite3DbFreeNN(((Mem*)v)->db, v);
} }
/* /*

View File

@@ -1786,7 +1786,7 @@ static void whereLoopClearUnion(sqlite3 *db, WhereLoop *p){
p->u.vtab.idxStr = 0; p->u.vtab.idxStr = 0;
}else if( (p->wsFlags & WHERE_AUTO_INDEX)!=0 && p->u.btree.pIndex!=0 ){ }else if( (p->wsFlags & WHERE_AUTO_INDEX)!=0 && p->u.btree.pIndex!=0 ){
sqlite3DbFree(db, p->u.btree.pIndex->zColAff); sqlite3DbFree(db, p->u.btree.pIndex->zColAff);
sqlite3DbFree(db, p->u.btree.pIndex); sqlite3DbFreeNN(db, p->u.btree.pIndex);
p->u.btree.pIndex = 0; p->u.btree.pIndex = 0;
} }
} }
@@ -1796,7 +1796,7 @@ static void whereLoopClearUnion(sqlite3 *db, WhereLoop *p){
** Deallocate internal memory used by a WhereLoop object ** Deallocate internal memory used by a WhereLoop object
*/ */
static void whereLoopClear(sqlite3 *db, WhereLoop *p){ static void whereLoopClear(sqlite3 *db, WhereLoop *p){
if( p->aLTerm!=p->aLTermSpace ) sqlite3DbFree(db, p->aLTerm); if( p->aLTerm!=p->aLTermSpace ) sqlite3DbFreeNN(db, p->aLTerm);
whereLoopClearUnion(db, p); whereLoopClearUnion(db, p);
whereLoopInit(p); whereLoopInit(p);
} }
@@ -1811,7 +1811,7 @@ static int whereLoopResize(sqlite3 *db, WhereLoop *p, int n){
paNew = sqlite3DbMallocRawNN(db, sizeof(p->aLTerm[0])*n); paNew = sqlite3DbMallocRawNN(db, sizeof(p->aLTerm[0])*n);
if( paNew==0 ) return SQLITE_NOMEM_BKPT; if( paNew==0 ) return SQLITE_NOMEM_BKPT;
memcpy(paNew, p->aLTerm, sizeof(p->aLTerm[0])*p->nLSlot); memcpy(paNew, p->aLTerm, sizeof(p->aLTerm[0])*p->nLSlot);
if( p->aLTerm!=p->aLTermSpace ) sqlite3DbFree(db, p->aLTerm); if( p->aLTerm!=p->aLTermSpace ) sqlite3DbFreeNN(db, p->aLTerm);
p->aLTerm = paNew; p->aLTerm = paNew;
p->nLSlot = n; p->nLSlot = n;
return SQLITE_OK; return SQLITE_OK;
@@ -1841,7 +1841,7 @@ static int whereLoopXfer(sqlite3 *db, WhereLoop *pTo, WhereLoop *pFrom){
*/ */
static void whereLoopDelete(sqlite3 *db, WhereLoop *p){ static void whereLoopDelete(sqlite3 *db, WhereLoop *p){
whereLoopClear(db, p); whereLoopClear(db, p);
sqlite3DbFree(db, p); sqlite3DbFreeNN(db, p);
} }
/* /*
@@ -1862,7 +1862,7 @@ static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){
pWInfo->pLoops = p->pNextLoop; pWInfo->pLoops = p->pNextLoop;
whereLoopDelete(db, p); whereLoopDelete(db, p);
} }
sqlite3DbFree(db, pWInfo); sqlite3DbFreeNN(db, pWInfo);
} }
} }
@@ -3253,7 +3253,7 @@ static int whereLoopAddVirtual(
} }
if( p->needToFreeIdxStr ) sqlite3_free(p->idxStr); if( p->needToFreeIdxStr ) sqlite3_free(p->idxStr);
sqlite3DbFree(pParse->db, p); sqlite3DbFreeNN(pParse->db, p);
return rc; return rc;
} }
#endif /* SQLITE_OMIT_VIRTUALTABLE */ #endif /* SQLITE_OMIT_VIRTUALTABLE */
@@ -4108,7 +4108,7 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){
if( nFrom==0 ){ if( nFrom==0 ){
sqlite3ErrorMsg(pParse, "no query solution"); sqlite3ErrorMsg(pParse, "no query solution");
sqlite3DbFree(db, pSpace); sqlite3DbFreeNN(db, pSpace);
return SQLITE_ERROR; return SQLITE_ERROR;
} }
@@ -4184,7 +4184,7 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){
pWInfo->nRowOut = pFrom->nRow; pWInfo->nRowOut = pFrom->nRow;
/* Free temporary memory and return success */ /* Free temporary memory and return success */
sqlite3DbFree(db, pSpace); sqlite3DbFreeNN(db, pSpace);
return SQLITE_OK; return SQLITE_OK;
} }