diff --git a/src/remote.c b/src/remote.c index c2c71592e..ce3530156 100644 --- a/src/remote.c +++ b/src/remote.c @@ -959,6 +959,7 @@ static int remote_head_for_ref(git_remote_head **out, git_remote *remote, git_re } if ((!git_reference__is_branch(ref_name)) || + !git_remote_name(remote) || (error = git_branch_upstream_remote(&upstream_remote, repo, ref_name)) || git__strcmp(git_remote_name(remote), git_buf_cstr(&upstream_remote)) || (error = git_branch_upstream_name(&upstream_name, repo, ref_name)) < 0 || diff --git a/tests/network/remote/remotes.c b/tests/network/remote/remotes.c index 2cdf9226e..c00929a23 100644 --- a/tests/network/remote/remotes.c +++ b/tests/network/remote/remotes.c @@ -535,6 +535,16 @@ static int remote_single_branch(git_remote **out, git_repository *repo, const ch return 0; } +void test_network_remote_remotes__fetch_from_anonymous(void) +{ + git_remote *remote; + + cl_git_pass(git_remote_create_anonymous(&remote, _repo, cl_fixture("testrepo.git"), + "refs/heads/*:refs/other/*")); + cl_git_pass(git_remote_fetch(remote, NULL, NULL, NULL)); + git_remote_free(remote); +} + void test_network_remote_remotes__single_branch(void) { git_clone_options opts = GIT_CLONE_OPTIONS_INIT;