From: drh Date: Fri, 8 Feb 2019 17:28:20 +0000 (+0000) Subject: Further simplifications to sqlite3VdbeMemSetStr(). X-Git-Tag: version-3.28.0~196 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=16d7e87caa1e02fabf6c226f1c0cf89c820c6a73;p=thirdparty%2Fsqlite.git Further simplifications to sqlite3VdbeMemSetStr(). FossilOrigin-Name: 1d212957079a2caa30f3c9d80f43464781bc9634c2b5181a5814efbddae31711 --- diff --git a/manifest b/manifest index d01e8c1192..53d85607bf 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 837c9fcb78..b06c875795 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5c499da8a4d0babc56883aa362ae124772fd9214a51169a88a5dee523d051658 \ No newline at end of file +1d212957079a2caa30f3c9d80f43464781bc9634c2b5181a5814efbddae31711 \ No newline at end of file diff --git a/src/vdbemem.c b/src/vdbemem.c index e4cea0ff68..32a375d3dc 100644 --- a/src/vdbemem.c +++ b/src/vdbemem.c @@ -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;