1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-08 15:02:10 +03:00

Follow up to r1609680: further simplify/optimize ap_proxy_strcmp_ematch().

While at it, same treatment for its mother ap_strcmp_match().


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1826313 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yann Ylavic
2018-03-09 09:36:18 +00:00
parent 17e80c8f32
commit 2077d6be0a
2 changed files with 8 additions and 9 deletions

View File

@@ -1502,10 +1502,7 @@ static int ap_proxy_strcmp_ematch(const char *str, const char *expected)
apr_size_t x, y;
for (x = 0, y = 0; expected[y]; ++y, ++x) {
int backref = (expected[y] == '$' && apr_isdigit(expected[y + 1]));
if (!str[x] && !backref)
return -1;
if (backref) {
if (expected[y] == '$' && apr_isdigit(expected[y + 1])) {
do {
y += 2;
} while (expected[y] == '$' && apr_isdigit(expected[y + 1]));
@@ -1518,10 +1515,12 @@ static int ap_proxy_strcmp_ematch(const char *str, const char *expected)
}
return -1;
}
else if (expected[y] == '\\') {
else if (!str[x]) {
return -1;
}
else if (expected[y] == '\\' && !expected[++y]) {
/* NUL is an invalid char! */
if (!expected[++y])
return -2;
return -2;
}
if (str[x] != expected[y])
return 1;