diff options
author | 2012-05-22 09:02:29 +0000 | |
---|---|---|
committer | 2012-05-22 09:02:29 +0000 | |
commit | f962b6f71abebd72afa58d78eab055d750d49d0c (patch) | |
tree | 490fe4a0a2c05408cd845d4a35f25c6c8f35c9a3 /lib/libsqlite3/src/vdbemem.c | |
parent | Fix ftell() to return EOVERFLOW if the file offset is greater than (diff) | |
download | wireguard-openbsd-f962b6f71abebd72afa58d78eab055d750d49d0c.tar.xz wireguard-openbsd-f962b6f71abebd72afa58d78eab055d750d49d0c.zip |
import sqlite 3.7.12 (tested by landry@)
Diffstat (limited to 'lib/libsqlite3/src/vdbemem.c')
-rw-r--r-- | lib/libsqlite3/src/vdbemem.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/libsqlite3/src/vdbemem.c b/lib/libsqlite3/src/vdbemem.c index 088d3d64a48..fd964de2e91 100644 --- a/lib/libsqlite3/src/vdbemem.c +++ b/lib/libsqlite3/src/vdbemem.c @@ -59,10 +59,10 @@ int sqlite3VdbeChangeEncoding(Mem *pMem, int desiredEnc){ ** Make sure pMem->z points to a writable allocation of at least ** n bytes. ** -** If the memory cell currently contains string or blob data -** and the third argument passed to this function is true, the -** current content of the cell is preserved. Otherwise, it may -** be discarded. +** If the third argument passed to this function is true, then memory +** cell pMem must contain a string or blob. In this case the content is +** preserved. Otherwise, if the third parameter to this function is false, +** any current string or blob value may be discarded. ** ** This function sets the MEM_Dyn flag and clears any xDel callback. ** It also clears MEM_Ephem and MEM_Static. If the preserve flag is @@ -77,6 +77,10 @@ int sqlite3VdbeMemGrow(Mem *pMem, int n, int preserve){ ); assert( (pMem->flags&MEM_RowSet)==0 ); + /* If the preserve flag is set to true, then the memory cell must already + ** contain a valid string or blob value. */ + assert( preserve==0 || pMem->flags&(MEM_Blob|MEM_Str) ); + if( n<32 ) n = 32; if( sqlite3DbMallocSize(pMem->db, pMem->zMalloc)<n ){ if( preserve && pMem->z==pMem->zMalloc ){ |