diff --git a/src/path.c b/src/path.c index 0e9e04d72..3c78c8b7c 100644 --- a/src/path.c +++ b/src/path.c @@ -159,6 +159,9 @@ int git_path_dirname_r(git_buf *buffer, const char *path) while (endp > path && *endp == '/') endp--; + if ((len = win32_prefix_length(path, endp - path + 1)) > 0) + goto Exit; + /* Find the start of the dir */ while (endp > path && *endp != '/') endp--; diff --git a/tests/core/path.c b/tests/core/path.c index 71c6eda58..eaaaf7245 100644 --- a/tests/core/path.c +++ b/tests/core/path.c @@ -89,8 +89,10 @@ void test_core_path__00_dirname(void) check_dirname(REP16("/abc"), REP15("/abc")); #ifdef GIT_WIN32 + check_dirname("C:/", "C:/"); check_dirname("C:/path/", "C:/"); check_dirname("C:/path", "C:/"); + check_dirname("//computername/", "//computername/"); check_dirname("//computername/path/", "//computername/"); check_dirname("//computername/path", "//computername/"); check_dirname("//computername/sub/path/", "//computername/sub");