Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Be careful to initialize the Mem.xDel field to zero for static Mems. (CVS 1671) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e17ea666b1eb1df12a1d4d78bda2e025 |
User & Date: | drh 2004-06-22 22:04:46.000 |
Context
2004-06-22
| ||
22:54 | Fix another uninitialized Mem.xDel problem. (CVS 1672) (check-in: cb4e242e83 user: drh tags: trunk) | |
22:04 | Be careful to initialize the Mem.xDel field to zero for static Mems. (CVS 1671) (check-in: e17ea666b1 user: drh tags: trunk) | |
17:59 | Make sure the result of a user-defined function uses the text encoding of the database. (CVS 1670) (check-in: d333ac8002 user: drh tags: trunk) | |
Changes
Changes to src/printf.c.
︙ | ︙ | |||
796 797 798 799 800 801 802 | va_start(ap,zFormat); z = base_vprintf(0, 0, zBuf, n, zFormat, ap); va_end(ap); return z; } | | | 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 | va_start(ap,zFormat); z = base_vprintf(0, 0, zBuf, n, zFormat, ap); va_end(ap); return z; } #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) /* ** A version of printf() that understands %lld. Used for debugging. ** The printf() built into some versions of windows does not understand %lld ** and segfaults if you give it a long long int. */ void sqlite3DebugPrintf(const char *zFormat, ...){ va_list ap; |
︙ | ︙ |
Changes to src/utf.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used to translate between UTF-8, ** UTF-16, UTF-16BE, and UTF-16LE. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used to translate between UTF-8, ** UTF-16, UTF-16BE, and UTF-16LE. ** ** $Id: utf.c,v 1.23 2004/06/22 22:04:46 drh Exp $ ** ** Notes on UTF-8: ** ** Byte-0 Byte-1 Byte-2 Byte-3 Value ** 0xxxxxxx 00000000 00000000 0xxxxxxx ** 110yyyyy 10xxxxxx 00000000 00000yyy yyxxxxxx ** 1110zzzz 10yyyyyy 10xxxxxx 00000000 zzzzyyyy yyxxxxxx |
︙ | ︙ | |||
317 318 319 320 321 322 323 324 325 326 327 328 329 330 | while( zIn<zTerm ){ READ_UTF16BE(zIn, c); WRITE_UTF8(z, c); } WRITE_UTF8(z, 0); pMem->n = (z-zOut)-1; } } sqlite3VdbeMemRelease(pMem); pMem->flags &= ~(MEM_Static|MEM_Dyn|MEM_Ephem|MEM_Short); pMem->enc = desiredEnc; if( (char *)zOut==pMem->zShort ){ pMem->flags |= (MEM_Term|MEM_Short); | > | 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 | while( zIn<zTerm ){ READ_UTF16BE(zIn, c); WRITE_UTF8(z, c); } WRITE_UTF8(z, 0); pMem->n = (z-zOut)-1; } assert( pMem->n+1<=len ); } sqlite3VdbeMemRelease(pMem); pMem->flags &= ~(MEM_Static|MEM_Dyn|MEM_Ephem|MEM_Short); pMem->enc = desiredEnc; if( (char *)zOut==pMem->zShort ){ pMem->flags |= (MEM_Term|MEM_Short); |
︙ | ︙ |
Changes to src/vdbeInt.h.
︙ | ︙ | |||
117 118 119 120 121 122 123 | i64 i; /* Integer value */ int n; /* Number of characters in string value, including '\0' */ u16 flags; /* Some combination of MEM_Null, MEM_Str, MEM_Dyn, etc. */ u8 type; /* One of MEM_Null, MEM_Str, etc. */ u8 enc; /* TEXT_Utf8, TEXT_Utf16le, or TEXT_Utf16be */ double r; /* Real value */ char *z; /* String or BLOB value */ | < > | 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | i64 i; /* Integer value */ int n; /* Number of characters in string value, including '\0' */ u16 flags; /* Some combination of MEM_Null, MEM_Str, MEM_Dyn, etc. */ u8 type; /* One of MEM_Null, MEM_Str, etc. */ u8 enc; /* TEXT_Utf8, TEXT_Utf16le, or TEXT_Utf16be */ double r; /* Real value */ char *z; /* String or BLOB value */ void (*xDel)(void *); /* If not null, call this function to delete Mem.z */ char zShort[NBFS]; /* Space for short strings */ }; typedef struct Mem Mem; /* ** A sorter builds a list of elements to be sorted. Each element of ** the list is an instance of the following structure. */ |
︙ | ︙ |
Changes to src/vdbeaux.c.
︙ | ︙ | |||
1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 | } } }else{ /* String or blob */ assert( serial_type>=12 ); pMem->z = (char *)buf; pMem->n = len; if( serial_type&0x01 ){ pMem->flags = MEM_Str | MEM_Ephem; }else{ pMem->flags = MEM_Blob | MEM_Ephem; } } return len; | > | 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 | } } }else{ /* String or blob */ assert( serial_type>=12 ); pMem->z = (char *)buf; pMem->n = len; pMem->xDel = 0; if( serial_type&0x01 ){ pMem->flags = MEM_Str | MEM_Ephem; }else{ pMem->flags = MEM_Blob | MEM_Ephem; } } return len; |
︙ | ︙ |