Unverified Commit b3923cf7 by Edward Thomson Committed by GitHub

Merge pull request #5050 from libgit2/ethomson/windows_init_traversal

git_repository_init: stop traversing at windows root
parents 9c402600 45f24e78
...@@ -489,10 +489,13 @@ int git_futils_mkdir( ...@@ -489,10 +489,13 @@ int git_futils_mkdir(
assert(len); assert(len);
/* we've walked all the given path's parents and it's either relative /*
* or rooted. either way, give up and make the entire path. * We've walked all the given path's parents and it's either relative
* (the parent is simply '.') or rooted (the length is less than or
* equal to length of the root path). The path may be less than the
* root path length on Windows, where `C:` == `C:/`.
*/ */
if ((len == 1 && parent_path.ptr[0] == '.') || len == root_len+1) { if ((len == 1 && parent_path.ptr[0] == '.') || len <= root_len) {
relative = make_path.ptr; relative = make_path.ptr;
break; break;
} }
......
...@@ -877,3 +877,15 @@ void test_repo_init__at_filesystem_root(void) ...@@ -877,3 +877,15 @@ void test_repo_init__at_filesystem_root(void)
git_buf_dispose(&root); git_buf_dispose(&root);
git_repository_free(repo); git_repository_free(repo);
} }
void test_repo_init__nonexistent_paths(void)
{
git_repository *repo;
#ifdef GIT_WIN32
cl_git_fail(git_repository_init(&repo, "Q:/non/existent/path", 0));
cl_git_fail(git_repository_init(&repo, "Q:\\non\\existent\\path", 0));
#else
cl_git_fail(git_repository_init(&repo, "/non/existent/path", 0));
#endif
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment