diff options
author | Jan Niklas Hasse <jhasse@bixense.com> | 2024-03-22 20:10:56 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-22 20:10:56 (GMT) |
commit | 481889bb5f3faa5b83116f6e583564e26bbabeec (patch) | |
tree | 522a5d700092aed3535a70619793b935c406c372 | |
parent | 9279832b28f2a7be30245d503b2ba974c3487a48 (diff) | |
parent | e5413d3cc13a3a9de0b8ca6faadb813270687cba (diff) | |
download | Ninja-481889bb5f3faa5b83116f6e583564e26bbabeec.zip Ninja-481889bb5f3faa5b83116f6e583564e26bbabeec.tar.gz Ninja-481889bb5f3faa5b83116f6e583564e26bbabeec.tar.bz2 |
Merge pull request #2398 from paboldin/pboldin/fixes/meson-lisa-dpdk-build
CanonicalizePath: fix 'a/b/.._foo' -> 'a' replacement
-rw-r--r-- | src/util.cc | 2 | ||||
-rw-r--r-- | src/util_test.cc | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/util.cc b/src/util.cc index 2a43775..7668e33 100644 --- a/src/util.cc +++ b/src/util.cc @@ -253,7 +253,7 @@ void CanonicalizePath(char* path, size_t* len, uint64_t* slash_bits) { if (src[0] == '.') { if (component_len == 1) break; // Ignore trailing '.' (e.g. 'foo/.' -> 'foo/') - if (src[1] == '.') { + if (component_len == 2 && src[1] == '.') { // Handle '..'. Back up if possible. if (component_count > 0) { while (--dst > dst0 && !IsPathSeparator(dst[-1])) { diff --git a/src/util_test.cc b/src/util_test.cc index 8467e2a..d76954c 100644 --- a/src/util_test.cc +++ b/src/util_test.cc @@ -152,6 +152,10 @@ TEST(CanonicalizePath, PathSamples) { path = "foo/.."; CanonicalizePath(&path); EXPECT_EQ(".", path); + + path = "foo/.._bar"; + CanonicalizePath(&path); + EXPECT_EQ("foo/.._bar", path); } #ifdef _WIN32 |