-C Support\sUTF-8\sfilenames\son\sOS/2\sby\sconverting\sthem\sto\sand\sfrom\sthe\slocal\scodepage.\sTicket\s3052.\s(CVS\s5014)
-D 2008-04-15T18:50:02
+C Back\sout\sthe\szero-terminator\soptimization\sintroduced\sin\scheck-in\s(4915).\nTicket\s#3056.\s(CVS\s5015)
+D 2008-04-16T00:28:14
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
F Makefile.in 25b3282a4ac39388632c2fb0e044ff494d490952
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F src/select.c 5b8824a326a923876827fa8771c5e4e9e3a7faa1
F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
F src/shell.c be22ec05c8c4a43a95a6ad3b8068542200451e07
-F src/sqlite.h.in 824f823b341e9c979f82edebf710c87b74d1b7f5
+F src/sqlite.h.in bbb063e9055d1833a3fe3926ffc2ef555cfd1da1
F src/sqlite3ext.h faacd0e6a81aabee0861c6d7883c9172e74ef5b3
F src/sqliteInt.h 625375d9327f0d79bf6f0f7864cc4a0543aec440
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
F src/table.c 2c48c575dd59b3a6c5c306bc55f51a9402cf429a
-F src/tclsqlite.c c4892f48927cb3db19faeb448ea8abddfd4846a8
+F src/tclsqlite.c 2877726bf32f7d72ff057b37ed6c93485b667ea1
F src/test1.c 8d633bcf3cd3b805c3393d58b5c1011d49b9b550
F src/test2.c f0808cc643528b9620e4059ca9bda8346f526121
F src/test3.c c715b5a8a6415d7b2c67f97c394eef488b6f7e63
F src/vdbeaux.c f7460fac0c61d90edb245c66b7ac35254868c8e5
F src/vdbeblob.c cc713c142c3d4952b380c98ee035f850830ddbdb
F src/vdbefifo.c a30c237b2a3577e1415fb6e288cbb6b8ed1e5736
-F src/vdbemem.c 095e18f84b3171a5f2d71fa93a4bfc64220c1cfe
+F src/vdbemem.c 237e61216381998ff71c6431e5e7bd03386f6225
F src/vtab.c f5e78bf73df3b0c1b53861109c1b2e0800b108cc
F src/where.c a686f1e04f1ce5515a801fb3f3a358ef2cbb6ed2
F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P a12fa0252c1bc45a116d0123758ef639cc8e451b
-R d8de72a548d7f4403c57ee71816098c3
-U pweilbacher
-Z ca8f83b6ee28230fbc93d88b258246a7
+P cafa8ac2687890355a7faa751d71859eb0fadd01
+R 10d0ed716771909e41eeeb97e122c258
+U drh
+Z bf5879aa4a093fef323324323481ba2a
-cafa8ac2687890355a7faa751d71859eb0fadd01
\ No newline at end of file
+cce8deae2d556916e2817e0cb9748dceb162085d
\ No newline at end of file
** the version number) and changes its name to "sqlite3.h" as
** part of the build process.
**
-** @(#) $Id: sqlite.h.in,v 1.304 2008/04/10 17:14:07 drh Exp $
+** @(#) $Id: sqlite.h.in,v 1.305 2008/04/16 00:28:14 drh Exp $
*/
#ifndef _SQLITE3_H_
#define _SQLITE3_H_
** If nByte is non-negative, then it is the maximum number of
** bytes read from zSql. When nByte is non-negative, the
** zSql string ends at either the first '\000' or '\u0000' character or
-** until the nByte-th byte, whichever comes first. If the caller knows
+** the nByte-th byte, whichever comes first. If the caller knows
** that the supplied string is nul-terminated, then there is a small
** performance advantage to be had by passing an nByte parameter that
** is equal to the number of bytes in the input string <i>including</i>
** read from zSql is read up to the first zero terminator.
**
** {F13014} If the nByte argument to [sqlite3_prepare_v2(db,zSql,nByte,...)]
-** and its variants is non-negative, then nBytes bytes
+** and its variants is non-negative, then at most nBytes bytes
** SQL text is read from zSql.
**
** {F13015} In [sqlite3_prepare_v2(db,zSql,N,P,pzTail)] and its variants
** In those
** routines that have a fourth argument, its value is the number of bytes
** in the parameter. To be clear: the value is the number of <u>bytes</u>
-** in the value, not the number of characters. The number
-** of bytes does not include the zero-terminator at the end of strings.
+** in the value, not the number of characters.
** If the fourth parameter is negative, the length of the string is
** number of bytes up to the first zero terminator.
**
**
** {F16436} The [sqlite3_result_text(C,V,N,D)] interface changes the
** return value of function C to be the UTF8 string
-** V up through the first zero or until N bytes are read if N
-** is positive.
+** V up the first zero if N is negative
+** or the first N bytes of V if N is non-negative.
**
** {F16439} The [sqlite3_result_text16(C,V,N,D)] interface changes the
** return value of function C to be the UTF16 native byte order
-** string V up through the first zero or until N bytes are read if N
-** is positive.
+** string V up to the first zero if N is
+** negative or the first N bytes of V if N is non-negative.
**
** {F16442} The [sqlite3_result_text16be(C,V,N,D)] interface changes the
** return value of function C to be the UTF16 big-endian
-** string V up through the first zero or until N bytes are read if N
-** is positive.
+** string V up to the first zero if N is
+** is negative or the first N bytes or V if N is non-negative.
**
** {F16445} The [sqlite3_result_text16le(C,V,N,D)] interface changes the
** return value of function C to be the UTF16 little-endian
-** string V up through the first zero or until N bytes are read if N
-** is positive.
+** string V up to the first zero if N is
+** negative or the first N bytes of V if N is non-negative.
**
** {F16448} The [sqlite3_result_value(C,V)] interface changes the
** return value of function C to be [unprotected sqlite3_value]
** A TCL Interface to SQLite. Append this file to sqlite3.c and
** compile the whole thing to build a TCL-enabled version of SQLite.
**
-** $Id: tclsqlite.c,v 1.215 2008/04/10 14:51:01 danielk1977 Exp $
+** $Id: tclsqlite.c,v 1.216 2008/04/16 00:28:14 drh Exp $
*/
#include "tcl.h"
#include <errno.h>
sqlite3_bind_int64(pStmt, i, v);
}else{
data = (unsigned char *)Tcl_GetStringFromObj(pVar, &n);
- sqlite3_bind_text(pStmt, i, (char *)data, n+1, SQLITE_STATIC);
+ sqlite3_bind_text(pStmt, i, (char *)data, n, SQLITE_STATIC);
Tcl_IncrRefCount(pVar);
apParm[nParm++] = pVar;
}
if( preserve && pMem->z && pMem->zMalloc && pMem->z!=pMem->zMalloc ){
memcpy(pMem->zMalloc, pMem->z, pMem->n);
}
- if( pMem->xDel && pMem->flags&MEM_Dyn){
+ if( pMem->flags&MEM_Dyn && pMem->xDel ){
pMem->xDel((void *)(pMem->z));
}
ctx.pFunc = pFunc;
ctx.isError = 0;
pFunc->xFinalize(&ctx);
- assert( !pMem->xDel || 0==(pMem->flags&MEM_Dyn) );
+ assert( 0==(pMem->flags&MEM_Dyn) && !pMem->xDel );
sqlite3_free(pMem->zMalloc);
*pMem = ctx.s;
rc = (ctx.isError?SQLITE_ERROR:SQLITE_OK);
sqlite3VdbeMemFinalize(p, p->u.pDef);
assert( (p->flags & MEM_Agg)==0 );
sqlite3VdbeMemRelease(p);
- }else if( p->xDel && p->flags&MEM_Dyn ){
+ }else if( p->flags&MEM_Dyn && p->xDel ){
p->xDel((void *)p->z);
p->xDel = 0;
}
sqlite3VdbeMemReleaseExternal(pTo);
memcpy(pTo, pFrom, MEMCELLSIZE);
pTo->xDel = 0;
- if( pFrom->xDel || pFrom->z==pFrom->zMalloc ){
+ if( (pFrom->flags&MEM_Dyn)!=0 || pFrom->z==pFrom->zMalloc ){
pTo->flags &= ~(MEM_Dyn|MEM_Static|MEM_Ephem);
assert( srcType==MEM_Ephem || srcType==MEM_Static );
pTo->flags |= srcType;
for(nByte=0; z[nByte] | z[nByte+1]; nByte+=2){}
}
flags |= MEM_Term;
- }else if( enc==SQLITE_UTF8 && nByte>0 && z[nByte-1]=='\0' ){
- nByte--;
- flags |= MEM_Term;
-#ifndef SQLITE_OMIT_UTF16
- }else if( enc && nByte>1 && z[nByte-1]=='\0' && z[nByte-2]=='\0' ){
- nByte -= 2;
- flags |= MEM_Term;
-#endif
}
/* The following block sets the new values of Mem.z and Mem.xDel. It