summaryrefslogtreecommitdiffstats
path: root/lib/libsqlite3/src/utf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libsqlite3/src/utf.c')
-rw-r--r--lib/libsqlite3/src/utf.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/libsqlite3/src/utf.c b/lib/libsqlite3/src/utf.c
index 97898746a29..25f4dadf0c7 100644
--- a/lib/libsqlite3/src/utf.c
+++ b/lib/libsqlite3/src/utf.c
@@ -199,7 +199,7 @@ u32 sqlite3Utf8Read(
** desiredEnc. It is an error if the string is already of the desired
** encoding, or if *pMem does not contain a string value.
*/
-int sqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
+SQLITE_NOINLINE int sqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
int len; /* Maximum length of output string in bytes */
unsigned char *zOut; /* Output buffer */
unsigned char *zIn; /* Input iterator */
@@ -314,12 +314,13 @@ 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;
+ pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->z);
translate_out:
#if defined(TRANSLATE_TRACE) && defined(SQLITE_DEBUG)