Use strchr instead of strstr for single-char lookups
authorDavid Rowley <drowley@postgresql.org>
Wed, 23 Jul 2025 00:02:55 +0000 (12:02 +1200)
committerDavid Rowley <drowley@postgresql.org>
Wed, 23 Jul 2025 00:02:55 +0000 (12:02 +1200)
Compilers such as gcc and clang seem to perform this rewrite
automatically when the lookup string is known at compile-time to contain
a single character.  The MSVC compiler does not seem apply the same
optimization, and the code being adjusted here is within an #ifdef WIN32,
so it seems worth adjusting this with the assumption that strchr() will be
slightly more performant.

There are a couple more instances in contrib/fuzzystrmatch that this
commit could also have adjusted.  After some discussion, we deemed those
not important enough to bother with.

Author: Dmitry Mityugov <d.mityugov@postgrespro.ru>
Reviewed-by: Corey Huinker <corey.huinker@gmail.com>
Reviewed-by: David Rowley <drowleyml@gmail.com>
Discussion: http://postgr.es/m/9c1beea6c7a5e9fb6677f26620f1f257%40postgrespro.ru

src/port/pgmkdirp.c

index d943559760d8980a1582f0bee064c0bea52b5597..7d7cea4dd0ea18670d09ac911a3bd742d46d04bf 100644 (file)
@@ -73,7 +73,7 @@ pg_mkdir_p(char *path, int omode)
        if (p[0] == '/' && p[1] == '/')
        {
            /* network drive */
-           p = strstr(p + 2, "/");
+           p = strchr(p + 2, '/');
            if (p == NULL)
            {
                errno = EINVAL;