|
|
|
@ -201,10 +201,21 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length) |
|
|
|
e = ue; |
|
|
|
|
|
|
|
if (!(p = memchr(s, '/', (ue - s)))) { |
|
|
|
if ((p = memchr(s, '?', (ue - s)))) { |
|
|
|
e = p; |
|
|
|
} else if ((p = memchr(s, '#', (ue - s)))) { |
|
|
|
e = p; |
|
|
|
char *query, *fragment; |
|
|
|
|
|
|
|
query = memchr(s, '?', (ue - s)); |
|
|
|
fragment = memchr(s, '#', (ue - s)); |
|
|
|
|
|
|
|
if (query && fragment) { |
|
|
|
if (query > fragment) { |
|
|
|
p = e = fragment; |
|
|
|
} else { |
|
|
|
p = e = query; |
|
|
|
} |
|
|
|
} else if (query) { |
|
|
|
p = e = query; |
|
|
|
} else if (fragment) { |
|
|
|
p = e = fragment; |
|
|
|
} |
|
|
|
} else { |
|
|
|
e = p; |
|
|
|
@ -285,10 +296,10 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length) |
|
|
|
|
|
|
|
if ((p = memchr(s, '?', (ue - s)))) { |
|
|
|
pp = strchr(s, '#'); |
|
|
|
|
|
|
|
|
|
|
|
if (pp && pp < p) { |
|
|
|
p = pp; |
|
|
|
pp = strchr(pp+2, '#'); |
|
|
|
goto label_parse; |
|
|
|
} |
|
|
|
|
|
|
|
if (p - s) { |
|
|
|
|