aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--fish_tests.cpp9
-rw-r--r--path.cpp4
2 files changed, 10 insertions, 3 deletions
diff --git a/fish_tests.cpp b/fish_tests.cpp
index a6b4b2ab..002912ac 100644
--- a/fish_tests.cpp
+++ b/fish_tests.cpp
@@ -576,7 +576,14 @@ static void test_path()
if( canon != L"/foo/bar" )
{
err( L"Bug in canonical PATH code" );
- }
+ }
+
+ path = L"/";
+ path_make_canonical(path);
+ if (path != L"/")
+ {
+ err( L"Bug in canonical PATH code" );
+ }
}
/** Test is_potential_path */
diff --git a/path.cpp b/path.cpp
index 3dcfcadd..28f10838 100644
--- a/path.cpp
+++ b/path.cpp
@@ -525,8 +525,8 @@ void path_make_canonical( wcstring &path )
replace_all(path, L"//", L"/");
} while (path.size() != size);
- /* Remove trailing slashes */
- while (size--) {
+ /* Remove trailing slashes, except don't remove the first one */
+ while (size-- > 1) {
if (path.at(size) != L'/')
break;
}