Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fetch.c10
-rw-r--r--src/refspec.c6
2 files changed, 9 insertions, 7 deletions
diff --git a/src/fetch.c b/src/fetch.c
index 1bb896870..e8809d0cc 100644
--- a/src/fetch.c
+++ b/src/fetch.c
@@ -36,11 +36,13 @@ static int filter_wants(git_remote *remote)
goto cleanup;
}
+ /*
+ * The fetch refspec can be NULL, and what this means is that the
+ * user didn't specify one. This is fine, as it means that we're
+ * not interested in any particular branch but just the remote's
+ * HEAD, which will be stored in FETCH_HEAD after the fetch.
+ */
spec = git_remote_fetchspec(remote);
- if (spec == NULL) {
- error = git__throw(GIT_ERROR, "The remote has no fetchspec");
- goto cleanup;
- }
for (i = 0; i < refs.len; ++i) {
git_remote_head *head = refs.heads[i];
diff --git a/src/refspec.c b/src/refspec.c
index 9de273071..ed4b5e6b8 100644
--- a/src/refspec.c
+++ b/src/refspec.c
@@ -42,17 +42,17 @@ int git_refspec_parse(git_refspec *refspec, const char *str)
const char *git_refspec_src(const git_refspec *refspec)
{
- return refspec->src;
+ return refspec == NULL ? NULL : refspec->src;
}
const char *git_refspec_dst(const git_refspec *refspec)
{
- return refspec->dst;
+ return refspec == NULL ? NULL : refspec->dst;
}
int git_refspec_src_match(const git_refspec *refspec, const char *refname)
{
- return git__fnmatch(refspec->src, refname, 0);
+ return refspec == NULL ? GIT_ENOMATCH : git__fnmatch(refspec->src, refname, 0);
}
int git_refspec_transform(char *out, size_t outlen, const git_refspec *spec, const char *name)