]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Small performance improvement for the new %#Q conversion in printf. unistr
authordrh <>
Tue, 25 Feb 2025 12:18:27 +0000 (12:18 +0000)
committerdrh <>
Tue, 25 Feb 2025 12:18:27 +0000 (12:18 +0000)
FossilOrigin-Name: 17e440781e68d7d3ea68c5144e1e08e183f0caef595a6c7ac4ce56489c60f476

manifest
manifest.uuid
src/printf.c

index 3adc2b10de5eaebe4cf63148ef6e423d710d8998..a1f57c81127392df98c79f3f356ebc44484a7baf 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Consolidate\stwo\sdifferent\sUTF8\sencoders\sinto\sa\ssingle\ssubroutine.
-D 2025-02-25T11:47:34.550
+C Small\sperformance\simprovement\sfor\sthe\snew\s%#Q\sconversion\sin\sprintf.
+D 2025-02-25T12:18:27.029
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -777,7 +777,7 @@ F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5
 F src/pcache1.c 78d4935e510f7bed0fdd1a3f742c0e663b36a795f9dc7411161dc22bdae1245e
 F src/pragma.c c7ada272232e1182c4536d9637fa7b955a10bc1bd8d5a87d4dc9309dab827791
 F src/prepare.c 1832be043fce7d489959aae6f994c452d023914714c4d5457beaed51c0f3d126
-F src/printf.c b6056bd2818523255255af34d370e2665b4895e50476955de797368d92f8f31f
+F src/printf.c b373a8800e09fb888497b2bc640e455ee8ebc584a60f16368989394d5b895ac0
 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 626c24b258b111f75c22107aa5614ad89810df3026f5ca071116d3fe75925c75
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
@@ -2211,8 +2211,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P c3949852cee320c2e02123b99c33155c459b10b2ac8e4fe80b1b7624c9ce0817
-R 783f95f7f826d114483ba4d9a5fea8e7
+P 6208e494858b9d362efc7db4e8aac6f8e93fe51d2e038c94dfa97c55a74688a0
+R 5e3cbac5c36e856b76f244c18c63cff3
 U drh
-Z 0a01b2d715a4d18665f9611e7764aecb
+Z 71404ee027b8adeecdc3ccec4e60e22e
 # Remove this line to create a well-formed Fossil manifest.
index 52be54b0699bd2dca1a4e67e58258f6ed7f8d482..170b88d197c66c97f8254cd2dd33ab05f44bbec4 100644 (file)
@@ -1 +1 @@
-6208e494858b9d362efc7db4e8aac6f8e93fe51d2e038c94dfa97c55a74688a0
+17e440781e68d7d3ea68c5144e1e08e183f0caef595a6c7ac4ce56489c60f476
index 30c4ec605982cadbea855bd3c2a2bb578835bfab..ae9e9010bd627202d2ba73eb8f7783f3e213adbd 100644 (file)
@@ -757,7 +757,7 @@ void sqlite3_str_vappendf(
       case etESCAPE_Q:          /* %Q: Escape ' and enclose in '...' */
       case etESCAPE_w: {        /* %w: Escape " characters */
         i64 i, j, k, n;
-        int isnull, needQuote = 0;
+        int needQuote = 0;
         char ch;
         char *escarg;
         char q;
@@ -767,18 +767,17 @@ void sqlite3_str_vappendf(
         }else{
           escarg = va_arg(ap,char*);
         }
-        isnull = escarg==0;
+        if( escarg==0 ){
+          escarg = (xtype==etESCAPE_Q ? "NULL" : "(NULL)");
+        }else if( xtype==etESCAPE_Q ){
+          needQuote = 1;
+        }
         if( xtype==etESCAPE_w ){
           q = '"';
           flag_alternateform = 0;
         }else{
           q = '\'';
         }
-        if( isnull ){
-          escarg = (xtype==etESCAPE_Q ? "NULL" : "(NULL)");
-        }else if( xtype==etESCAPE_Q ){
-          needQuote = 1;
-        }
         /* For %q, %Q, and %w, the precision is the number of bytes (or
         ** characters if the ! flags is present) to use from the input.
         ** Because of the extra quoting characters inserted, the number
@@ -832,12 +831,12 @@ void sqlite3_str_vappendf(
           }
         }
         k = i;
-        for(i=0; i<k; i++){
-          bufpt[j++] = ch = escarg[i];
-          if( ch==q ){
-            bufpt[j++] = ch;
-          }else if( flag_alternateform ){
-            if( ch=='\\' ){
+        if( flag_alternateform ){
+          for(i=0; i<k; i++){
+            bufpt[j++] = ch = escarg[i];
+            if( ch==q ){
+              bufpt[j++] = ch;
+            }else if( ch=='\\' ){
               bufpt[j++] = '\\';
             }else if( ch<=0x1f ){
               bufpt[j-1] = '\\';
@@ -848,6 +847,11 @@ void sqlite3_str_vappendf(
               bufpt[j++] = "0123456789abcdef"[ch&0xf];
             }
           }
+        }else{
+          for(i=0; i<k; i++){
+            bufpt[j++] = ch = escarg[i];
+            if( ch==q ) bufpt[j++] = ch;
+          }
         }
         if( needQuote ){
           bufpt[j++] = '\'';