]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Further simplifications to sqlite3VdbeMemSetStr().
authordrh <drh@noemail.net>
Fri, 8 Feb 2019 17:28:20 +0000 (17:28 +0000)
committerdrh <drh@noemail.net>
Fri, 8 Feb 2019 17:28:20 +0000 (17:28 +0000)
FossilOrigin-Name: 1d212957079a2caa30f3c9d80f43464781bc9634c2b5181a5814efbddae31711

manifest
manifest.uuid
src/vdbemem.c

index d01e8c1192612a98c338211fd6fa9a0eeb77f398..53d85607bfbe2d40f4f4e96193a89b4d6c7d2099 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\sthe\ssqlite3VdbeMemGrow()\sroutine\sso\sthat\sit\sno\slonger\sguarantees\sa\nminimum\ssize\sof\s32\sbytes.\s\sThat\sminimum\sis\sno\slonger\srequired,\sand\swithout\nthe\sextra\scheck\sfor\sthe\sminimum\ssize,\sthe\sroutine\sruns\sfaster.
-D 2019-02-08T15:59:20.543
+C Further\ssimplifications\sto\ssqlite3VdbeMemSetStr().
+D 2019-02-08T17:28:20.169
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4
@@ -591,7 +591,7 @@ F src/vdbeInt.h a76d5eed62c76bcd8de7afd3147fac1bc40c5a870582664bcd7d071ef437c37f
 F src/vdbeapi.c 57a2d794a8833f269b878dbc24e955369bdb379af6c4e93ebc5ce1a20fa3daf4
 F src/vdbeaux.c 4fa28b32452f6197dba7c8780dde11576b9a6d8ce6f35adbb69efc3e7d37fa0c
 F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191
-F src/vdbemem.c 8facf8d2470af0b8f5995b405b7e061435b58ac53350fddd5e5399adfa904b73
+F src/vdbemem.c 3e89e087df928eba80e520824078dc563c579a0848b1557ac36845ec14392923
 F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7f
 F src/vdbetrace.c 79d6dbbc479267b255a7de8080eee6e729928a0ef93ed9b0bfa5618875b48392
 F src/vtab.c 2462b7d6fd72b0b916477f5ef210ee49ab58cec195483ebdac0c8c5e3ec42cab
@@ -1804,7 +1804,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 5c6638040b3017c6be016441422d965a3ca00dd6ae1f78cadc0b54562978f64e
-R fcc87fb69789bc1e53d9d02a501d47e6
+P 5c499da8a4d0babc56883aa362ae124772fd9214a51169a88a5dee523d051658
+R 9c9226b3cda6f38720edaaa5f3813b03
 U drh
-Z 16cd16f85b68b2c2cfa22d11f08d6b4d
+Z 9bc13d9b07eaf6edcfa1cadc644eb143
index 837c9fcb7851fbb995bd10f8ea3c173b58ae4953..b06c875795753002d40103ec52d4e459816ada53 100644 (file)
@@ -1 +1 @@
-5c499da8a4d0babc56883aa362ae124772fd9214a51169a88a5dee523d051658
\ No newline at end of file
+1d212957079a2caa30f3c9d80f43464781bc9634c2b5181a5814efbddae31711
\ No newline at end of file
index e4cea0ff6876b8e3b27ce5b853a6cbf3d92d5589..32a375d3dc4a693e3769ed3ab2c67ae50a31bd04 100644 (file)
@@ -1045,7 +1045,6 @@ int sqlite3VdbeMemSetStr(
     assert( enc!=0 );
     if( enc==SQLITE_UTF8 ){
       nByte = 0x7fffffff & (int)strlen(z);
-      if( nByte>iLimit ) nByte = iLimit+1;
     }else{
       for(nByte=0; nByte<=iLimit && (z[nByte] | z[nByte+1]); nByte+=2){}
     }
@@ -1057,7 +1056,7 @@ int sqlite3VdbeMemSetStr(
   ** management (one of MEM_Dyn or MEM_Static).
   */
   if( xDel==SQLITE_TRANSIENT ){
-    int nAlloc = nByte;
+    u32 nAlloc = nByte;
     if( flags&MEM_Term ){
       nAlloc += (enc==SQLITE_UTF8?1:2);
     }
@@ -1067,19 +1066,20 @@ int sqlite3VdbeMemSetStr(
     testcase( nAlloc==0 );
     testcase( nAlloc==31 );
     testcase( nAlloc==32 );
-    if( sqlite3VdbeMemClearAndResize(pMem, MAX(nAlloc,32)) ){
+    if( sqlite3VdbeMemClearAndResize(pMem, (int)MAX(nAlloc,32)) ){
       return SQLITE_NOMEM_BKPT;
     }
     memcpy(pMem->z, z, nAlloc);
-  }else if( xDel==SQLITE_DYNAMIC ){
-    sqlite3VdbeMemRelease(pMem);
-    pMem->zMalloc = pMem->z = (char *)z;
-    pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc);
   }else{
     sqlite3VdbeMemRelease(pMem);
     pMem->z = (char *)z;
-    pMem->xDel = xDel;
-    flags |= ((xDel==SQLITE_STATIC)?MEM_Static:MEM_Dyn);
+    if( xDel==SQLITE_DYNAMIC ){
+      pMem->zMalloc = pMem->z;
+      pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc);
+    }else{
+      pMem->xDel = xDel;
+      flags |= ((xDel==SQLITE_STATIC)?MEM_Static:MEM_Dyn);
+    }
   }
 
   pMem->n = nByte;