Fix an issue with sqlite3_bind_text64() with the SQLITE_UTF16 encoding

parameter.  Remove some unreachable code from the text64() and blob64()
implementation.

FossilOrigin-Name: 34292b084ef48cd6e9ca5704f6b072a29733b4c2
This commit is contained in:
drh 2014-09-11 23:34:55 +00:00
parent 46c831bf2a
commit fc59a954cb
3 changed files with 13 additions and 10 deletions

View File

@ -1,5 +1,5 @@
C Add\snew\sAPIs\sthat\stake\s64-bit\slength\sparameters:\ssqlite3_malloc64(),\nsqlite3_realloc64(),\ssqlite3_bind_blob64(),\ssqlite3_bind_text64(),\nsqlite3_result_blob64(),\sand\ssqlite3_result_text64().\nAdd\sthe\ssqlite3_msize()\sinterface.\nInternal\smemory\sallocation\sroutines\snow\suse\s64-bit\sunsigned\nlength\sparameters\sfor\ssafety.\nFix\sthe\ssqlite3_get_table()\sto\suse\ssqlite3_realloc64()\sto\savoid\na\sinteger\soverflow\sproblem.
D 2014-09-11T18:44:04.913
C Fix\san\sissue\swith\ssqlite3_bind_text64()\swith\sthe\sSQLITE_UTF16\sencoding\nparameter.\s\sRemove\ssome\sunreachable\scode\sfrom\sthe\stext64()\sand\sblob64()\nimplementation.
D 2014-09-11T23:34:55.607
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -291,7 +291,7 @@ F src/vacuum.c 59f03f92bcff57faa6a8ca256eb29ccddfb0614a
F src/vdbe.c 9a45dcbcc967fc0cb9248c75ba245d1d47de3e78
F src/vdbe.h c63fad052c9e7388d551e556e119c0bcf6bebdf8
F src/vdbeInt.h b4843c35c3ba533b69d4250f550b5bacf2fb013d
F src/vdbeapi.c cec65a12dc2fe9072d5108d9f75df57b0324883a
F src/vdbeapi.c 06b712d4772b318b69cd37a416deb1ff0426aa8c
F src/vdbeaux.c 91fd1e0c54a765838dc61fcf79f31acce035ce38
F src/vdbeblob.c 848238dc73e93e48432991bb5651bf87d865eca4
F src/vdbemem.c dc36ea9fe26c25550c50085f388167086ef7d73a
@ -1197,8 +1197,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 65884d4f81a4705b0356b6cb8ec4909945ff5c19 6ab76c5fedfe568b0f0f34a600f9135bf6558148
R a34346a4fba04f6707f06567bf21377a
T +closed 6ab76c5fedfe568b0f0f34a600f9135bf6558148
P 7e4978c003867d1b532b69221013dda75ca61953
R 5b504a805873df7c692d762cd653895b
U drh
Z ecfd648f0ae419a16a536c86444de6f4
Z 9235587180e257c32aca7830c18cbf2e

View File

@ -1 +1 @@
7e4978c003867d1b532b69221013dda75ca61953
34292b084ef48cd6e9ca5704f6b072a29733b4c2

View File

@ -235,12 +235,11 @@ static int invokeValueDestructor(
void (*xDel)(void*), /* The destructor */
sqlite3_context *pCtx /* Set a SQLITE_TOOBIG error if no NULL */
){
assert( xDel!=SQLITE_DYNAMIC );
if( xDel==0 ){
/* noop */
}else if( xDel==SQLITE_TRANSIENT ){
/* noop */
}else if( xDel==SQLITE_DYNAMIC ){
sqlite3_free((void*)p);
}else{
xDel((void*)p);
}
@ -264,6 +263,7 @@ void sqlite3_result_blob64(
void (*xDel)(void *)
){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
assert( xDel!=SQLITE_DYNAMIC );
if( n>0x7fffffff ){
(void)invokeValueDestructor(z, xDel, pCtx);
}else{
@ -317,6 +317,7 @@ void sqlite3_result_text64(
unsigned char enc
){
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
assert( xDel!=SQLITE_DYNAMIC );
if( n>0x7fffffff ){
(void)invokeValueDestructor(z, xDel, pCtx);
}else{
@ -1179,6 +1180,7 @@ int sqlite3_bind_blob64(
sqlite3_uint64 nData,
void (*xDel)(void*)
){
assert( xDel!=SQLITE_DYNAMIC );
if( nData>0x7fffffff ){
return invokeValueDestructor(zData, xDel, 0);
}else{
@ -1234,9 +1236,11 @@ int sqlite3_bind_text64(
void (*xDel)(void*),
unsigned char enc
){
assert( xDel!=SQLITE_DYNAMIC );
if( nData>0x7fffffff ){
return invokeValueDestructor(zData, xDel, 0);
}else{
if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
return bindText(pStmt, i, zData, nData, xDel, enc);
}
}