summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2021-01-07 14:01:30 +0000
committerEdward Thomson <ethomson@edwardthomson.com>2021-01-07 14:01:30 +0000
commit32350e89d8e3ca245def9ccee05aa21c92e10726 (patch)
treef59aa80b1ef146f7fc0783ded1bcdef7ba6c0a93
parentc41871e542dce9cfb1b5cf1814e17c65c7e04ce4 (diff)
downloadlibgit2-32350e89d8e3ca245def9ccee05aa21c92e10726.tar.gz
remote: don't update invalid refs
If a symbolic reference points to something invalid, then do not try to update it.
-rw-r--r--src/remote.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/remote.c b/src/remote.c
index 29e15bbdf..55effccfb 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -1141,6 +1141,16 @@ static int remote_head_for_ref(git_remote_head **out, git_remote *remote, git_re
ref_name = git_reference_name(resolved_ref);
}
+ /*
+ * The ref name may be unresolvable - perhaps it's pointing to
+ * something invalid. In this case, there is no remote head for
+ * this ref.
+ */
+ if (!ref_name) {
+ error = 0;
+ goto cleanup;
+ }
+
if ((error = ref_to_update(&update, &remote_name, remote, spec, ref_name)) < 0)
goto cleanup;