diff --git a/fish_tests.cpp b/fish_tests.cpp index a6b4b2ab2..002912acd 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 3dcfcadd8..28f108389 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; }