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:
30
manifest
30
manifest
@@ -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
|
||||||
|
@@ -1 +1 @@
|
|||||||
9e6c939144a129b36bb119120442a4a021e00187783da211315d4bb13acd7c3a
|
ad90e8bb5e47945607c8fb47b6ade8cfc52a9b684805cc40132629be0ecc14cc
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -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);
|
||||||
|
11
src/malloc.c
11
src/malloc.c
@@ -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
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 */
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
16
src/where.c
16
src/where.c
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user