fs/Traits: allow base to end with a slash in Relative()
Fixes false negatives: http://foo/dav/example.ogg mismatches http://foo/dav/ .. because StringAfterPrefix() returns just "example.ogg", without trailing slash (it existed, but was eaten already by the base matcher).
This commit is contained in:
parent
ca559b1db6
commit
cd522f524d
@ -99,9 +99,16 @@ RelativePathImpl(typename Traits::const_pointer_type base,
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
if (*other != 0) {
|
if (*other != 0) {
|
||||||
if (!Traits::IsSeparator(*other))
|
if (!Traits::IsSeparator(*other)) {
|
||||||
|
if (*base != 0 && Traits::IsSeparator(other[-1]))
|
||||||
|
/* "other" has no more slash, but the
|
||||||
|
matching base ended with a slash:
|
||||||
|
enough to detect a match */
|
||||||
|
return other;
|
||||||
|
|
||||||
/* mismatch */
|
/* mismatch */
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
/* skip remaining path separators */
|
/* skip remaining path separators */
|
||||||
do {
|
do {
|
||||||
|
Loading…
Reference in New Issue
Block a user