diff options
author | Scott Lobdell <slobdell@google.com> | 2021-03-29 16:12:49 +0000 |
---|---|---|
committer | Scott Lobdell <slobdell@google.com> | 2021-04-02 22:35:29 +0000 |
commit | 21cdef883cc867db55340b25d5c95e19b12ab383 (patch) | |
tree | 93d1444ebe783f53f5f0ae2647592723b27b3fb8 /services/incremental/path.cpp | |
parent | 7deab3736bb5f3a92be8ac820096926dce2366ad (diff) | |
parent | d1d45f856fdf68835f5b42eacecab44e6dfa8545 (diff) |
Merge SP1A.210329.001
Change-Id: I1e21c5890b5b2e2f2855f09960bc8eec8aa922bf
Diffstat (limited to 'services/incremental/path.cpp')
-rw-r--r-- | services/incremental/path.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/services/incremental/path.cpp b/services/incremental/path.cpp index 338659d40b46..bf4e9616057c 100644 --- a/services/incremental/path.cpp +++ b/services/incremental/path.cpp @@ -44,19 +44,20 @@ bool PathLess::operator()(std::string_view l, std::string_view r) const { PathCharsLess()); } -static void preparePathComponent(std::string_view& path, bool trimFront) { - if (trimFront) { - while (!path.empty() && path.front() == '/') { - path.remove_prefix(1); - } +static void preparePathComponent(std::string_view& path, bool trimAll) { + // need to check for double front slash as a single one has a separate meaning in front + while (!path.empty() && path.front() == '/' && + (trimAll || (path.size() > 1 && path[1] == '/'))) { + path.remove_prefix(1); } - while (!path.empty() && path.back() == '/') { + // for the back we don't care about double-vs-single slash difference + while (path.size() > !trimAll && path.back() == '/') { path.remove_suffix(1); } } void details::append_next_path(std::string& target, std::string_view path) { - preparePathComponent(path, true); + preparePathComponent(path, !target.empty()); if (path.empty()) { return; } |