Continuing cleanup of memory register memory allocation handling.

FossilOrigin-Name: 2598aedc5dd2bac67e2e518a31f2803e469c2ba6
This commit is contained in:
drh 2014-09-16 21:54:11 +00:00
parent 8740a60016
commit 6b478bcd9e
4 changed files with 18 additions and 19 deletions

View File

@ -1,5 +1,5 @@
C Make\ssure\sregisters\sare\scleared\sproperly\sprior\sto\sbeing\sused\sto\sstore\nthe\sresult\sof\san\sOP_Column\soperator.
D 2014-09-16T20:05:21.909
C Continuing\scleanup\sof\smemory\sregister\smemory\sallocation\shandling.
D 2014-09-16T21:54:11.409
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -285,7 +285,7 @@ F src/threads.c 22dded4283dc4b25422f6444cdcb8d6b1ea0b5ff
F src/tokenize.c 3df63041994f55afeb168b463ec836e8f1c50e7c
F src/trigger.c 25571661fdeae8c7f975ff40ffec205520a3f92f
F src/update.c 729f6f18fc27740591d085e1172cebe311144bf0
F src/utf.c 77abb5e6d27f3d236e50f7c8fff1d00e15262359
F src/utf.c 8f634b93d41c089029dd503161a7d3e685d59a9c
F src/util.c 4006c01772bd8d8ac4306d523bbcee41d3e392d8
F src/vacuum.c 59f03f92bcff57faa6a8ca256eb29ccddfb0614a
F src/vdbe.c 6a45baf86fcc6c294d57e0aef8c9f2c54f07ff18
@ -294,7 +294,7 @@ F src/vdbeInt.h dc1743de339f5556cc6687219cf8727ad0d35f72
F src/vdbeapi.c 4d2aa56efa1b4a010012466bf8e97dbf179081a6
F src/vdbeaux.c 211ad29d51e01c44a0db1ab69b74c11c8de1cccf
F src/vdbeblob.c 848238dc73e93e48432991bb5651bf87d865eca4
F src/vdbemem.c 18556fc614426886e380def839bdcf9cadbb752a
F src/vdbemem.c 9615c9aba37ec42bd6ea705d3d72379c77720b00
F src/vdbesort.c 09efa5e5098d1a159cd21f588eb118e4fe87cfde
F src/vdbetrace.c 16d39c1ef7d1f4a3a7464bea3b7b4bdd7849c415
F src/vtab.c 019dbfd0406a7447c990e1f7bd1dfcdb8895697f
@ -1198,7 +1198,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P f73678038d8fc399c1ca55230ae45962007c909c
R 39f3c2bf48f680cf4e99aef8c3698c28
P 78fb8838d80b229418c347c63579989432e1af7d
R 386107f24552e12c4df7dfd8a184a53a
U drh
Z e586af33404759487ed3f6653fe697fa
Z 90927a6d3c50834bddf5d6b0b977d8d6

View File

@ -1 +1 @@
78fb8838d80b229418c347c63579989432e1af7d
2598aedc5dd2bac67e2e518a31f2803e469c2ba6

View File

@ -314,10 +314,10 @@ SQLITE_NOINLINE int sqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
*z = 0;
assert( (pMem->n+(desiredEnc==SQLITE_UTF8?1:2))<=len );
c = pMem->flags;
sqlite3VdbeMemRelease(pMem);
pMem->flags &= ~(MEM_Static|MEM_Dyn|MEM_Ephem);
pMem->flags = MEM_Str|MEM_Term|(c&MEM_AffMask);
pMem->enc = desiredEnc;
pMem->flags |= (MEM_Term);
pMem->z = (char*)zOut;
pMem->zMalloc = pMem->z;

View File

@ -335,8 +335,11 @@ void sqlite3VdbeMemReleaseExternal(Mem *p){
}else if( p->flags&MEM_RowSet ){
sqlite3RowSetClear(p->u.pRowSet);
}else if( p->flags&MEM_Frame ){
sqlite3VdbeMemSetNull(p);
VdbeFrame *pFrame = p->u.pFrame;
pFrame->pParent = pFrame->v->pDelFrame;
pFrame->v->pDelFrame = pFrame;
}
p->flags = MEM_Null;
}
/*
@ -589,15 +592,11 @@ void sqlite3VdbeMemCast(Mem *pMem, u8 aff, u8 encoding){
** Delete any previous value and set the value stored in *pMem to NULL.
*/
void sqlite3VdbeMemSetNull(Mem *pMem){
if( pMem->flags & MEM_Frame ){
VdbeFrame *pFrame = pMem->u.pFrame;
pFrame->pParent = pFrame->v->pDelFrame;
pFrame->v->pDelFrame = pFrame;
if( VdbeMemDynamic(pMem) ){
sqlite3VdbeMemReleaseExternal(pMem);
}else{
pMem->flags = MEM_Null;
}
if( pMem->flags & MEM_RowSet ){
sqlite3RowSetClear(pMem->u.pRowSet);
}
MemSetTypeFlag(pMem, MEM_Null);
}
void sqlite3ValueSetNull(sqlite3_value *p){
sqlite3VdbeMemSetNull((Mem*)p);