]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an issue with sqlite3_bind_text64() with the SQLITE_UTF16 encoding
authordrh <drh@noemail.net>
Thu, 11 Sep 2014 23:34:55 +0000 (23:34 +0000)
committerdrh <drh@noemail.net>
Thu, 11 Sep 2014 23:34:55 +0000 (23:34 +0000)
parameter.  Remove some unreachable code from the text64() and blob64()
implementation.

FossilOrigin-Name: 34292b084ef48cd6e9ca5704f6b072a29733b4c2

manifest
manifest.uuid
src/vdbeapi.c

index 24f2ea483a2e19a97cb749f2c1813ccf4de7cb3f..c83ebe16ff714576415b3888c035dcc77a7715ed 100644 (file)
--- a/manifest
+++ b/manifest
@@ -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
index 0feb233a2e14b1f64003f9450f17bfd7eef5fe0a..1b709cc082563328dabe39b8d599cc6a23912361 100644 (file)
@@ -1 +1 @@
-7e4978c003867d1b532b69221013dda75ca61953
\ No newline at end of file
+34292b084ef48cd6e9ca5704f6b072a29733b4c2
\ No newline at end of file
index 4dccb30c15a6a138bd8758420f12cb37ece8d4bd..b64f33c8c6ed3202ef4fcf8db8f141e8c4f83ad6 100644 (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);
   }
 }