From: Brian Pane Date: Sun, 23 Jun 2002 09:01:22 +0000 (+0000) Subject: Removed "tolower(++s)" idiom from ap_strcasestr(), to avoid side-effects X-Git-Tag: 2.0.40~393 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b2fe8e6f272fe3188aca3477f9e292df42f0c46c;p=apache Removed "tolower(++s)" idiom from ap_strcasestr(), to avoid side-effects on any platform with a macro-based tolower() that references its argument multiple times. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@95867 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/include/httpd.h b/include/httpd.h index c6f2d029e6..f563951cca 100644 --- a/include/httpd.h +++ b/include/httpd.h @@ -1453,6 +1453,7 @@ AP_DECLARE(int) ap_strcasecmp_match(const char *str, const char *exp); * @param s1 The string to search * @param s2 The substring to search for * @return A pointer to the beginning of the substring + * @remark See apr_strmatch() for a faster alternative */ AP_DECLARE(char *) ap_strcasestr(const char *s1, const char *s2); diff --git a/server/util.c b/server/util.c index 65c695a5cb..c86e37cdbf 100644 --- a/server/util.c +++ b/server/util.c @@ -327,7 +327,7 @@ AP_DECLARE(char *) ap_strcasestr(const char *s1, const char *s2) /* found first character of s2, see if the rest matches */ p1 = (char *)s1; p2 = (char *)s2; - while (apr_tolower(*++p1) == apr_tolower(*++p2)) { + for (++p1, ++p2; apr_tolower(*p1) == apr_tolower(*p2); ++p1, ++p2) { if (*p1 == '\0') { /* both strings ended together */ return((char *)s1);