diff options
author | dan <dan@noemail.net> | 2015-01-01 18:03:49 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2015-01-01 18:03:49 +0000 |
commit | 37db72f1f7ca41c61b1c084bdb75f3111ceba6f8 (patch) | |
tree | 5a01dcb28b6513353a64e93b11d6243845e69bc7 /src/utf.c | |
parent | 6024772ba292a9abc6810dd0b12767d02b47ccf1 (diff) | |
parent | a0de826c9ff84bd19de76ebbc0d4bdafa9686d3a (diff) | |
download | sqlite-37db72f1f7ca41c61b1c084bdb75f3111ceba6f8.tar.gz sqlite-37db72f1f7ca41c61b1c084bdb75f3111ceba6f8.zip |
Merge latest trunk changes with this branch.
FossilOrigin-Name: 4b3651677e7132c4c45605bc1f216fc08ef31198
Diffstat (limited to 'src/utf.c')
-rw-r--r-- | src/utf.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -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) |