[PATH] spell.c (avoid call strlen repeatedly in loop. - Mailing list pgsql-hackers

From Ranier VF
Subject [PATH] spell.c (avoid call strlen repeatedly in loop.
Date
Msg-id MN2PR18MB29275C5AC49AD1DF3D98E85EE37A0@MN2PR18MB2927.namprd18.prod.outlook.com
Whole thread Raw
List pgsql-hackers
Hi Mark,
Another example, can you take a look?

--- \dll\postgresql-12.0\a\backend\tsearch\spell.c    Mon Sep 30 17:06:55 2019
+++ spell.c    Sat Nov 09 05:55:23 2019
@@ -186,7 +186,7 @@
 #define MAX_NORM 1024
 #define MAXNORMLEN 256

-#define STRNCMP(s,p)    strncmp( (s), (p), strlen(p) )
+#define STRNCMP(s,p)    strncmp( (s), (p), sizeof(p) - 1 )
 #define GETWCHAR(W,L,N,T) ( ((const uint8*)(W))[ ((T)==FF_PREFIX) ? (N) : ( (L) - 1 - (N) ) ] )
 #define GETCHAR(A,N,T)      GETWCHAR( (A)->repl, (A)->replen, N, T )

@@ -1220,31 +1220,31 @@
         }

         if (STRNCMP(recoded, "COMPOUNDFLAG") == 0)
-            addCompoundAffixFlagValue(Conf, recoded + strlen("COMPOUNDFLAG"),
+            addCompoundAffixFlagValue(Conf, recoded + sizeof("COMPOUNDFLAG") - 1,
                                       FF_COMPOUNDFLAG);
         else if (STRNCMP(recoded, "COMPOUNDBEGIN") == 0)
-            addCompoundAffixFlagValue(Conf, recoded + strlen("COMPOUNDBEGIN"),
+            addCompoundAffixFlagValue(Conf, recoded + sizeof("COMPOUNDBEGIN") - 1,
                                       FF_COMPOUNDBEGIN);
         else if (STRNCMP(recoded, "COMPOUNDLAST") == 0)
-            addCompoundAffixFlagValue(Conf, recoded + strlen("COMPOUNDLAST"),
+            addCompoundAffixFlagValue(Conf, recoded + sizeof("COMPOUNDLAST") - 1,
                                       FF_COMPOUNDLAST);
         /* COMPOUNDLAST and COMPOUNDEND are synonyms */
         else if (STRNCMP(recoded, "COMPOUNDEND") == 0)
-            addCompoundAffixFlagValue(Conf, recoded + strlen("COMPOUNDEND"),
+            addCompoundAffixFlagValue(Conf, recoded + sizeof("COMPOUNDEND") - 1,
                                       FF_COMPOUNDLAST);
         else if (STRNCMP(recoded, "COMPOUNDMIDDLE") == 0)
-            addCompoundAffixFlagValue(Conf, recoded + strlen("COMPOUNDMIDDLE"),
+            addCompoundAffixFlagValue(Conf, recoded + sizeof("COMPOUNDMIDDLE") - 1,
                                       FF_COMPOUNDMIDDLE);
         else if (STRNCMP(recoded, "ONLYINCOMPOUND") == 0)
-            addCompoundAffixFlagValue(Conf, recoded + strlen("ONLYINCOMPOUND"),
+            addCompoundAffixFlagValue(Conf, recoded + sizeof("ONLYINCOMPOUND") - 1,
                                       FF_COMPOUNDONLY);
         else if (STRNCMP(recoded, "COMPOUNDPERMITFLAG") == 0)
             addCompoundAffixFlagValue(Conf,
-                                      recoded + strlen("COMPOUNDPERMITFLAG"),
+                                      recoded + sizeof("COMPOUNDPERMITFLAG") - 1,
                                       FF_COMPOUNDPERMITFLAG);
         else if (STRNCMP(recoded, "COMPOUNDFORBIDFLAG") == 0)
             addCompoundAffixFlagValue(Conf,
-                                      recoded + strlen("COMPOUNDFORBIDFLAG"),
+                                      recoded + sizeof("COMPOUNDFORBIDFLAG") - 1,
                                       FF_COMPOUNDFORBIDFLAG);
         else if (STRNCMP(recoded, "FLAG") == 0)
         {

Attachment

pgsql-hackers by date:

Previous
From: Ranier VF
Date:
Subject: RE: Patch avoid call strlen repeatedly in loop.
Next
From: Juan José Santamaría Flecha
Date:
Subject: Re: Collation versions on Windows (help wanted, apply within)