refs: don't loose info on resolve error Typical use is git_reference_resolve(&ref, ref). Currently, if there is an error, ref will point to NULL, causing the user to lose that reference. Always update resolved_ref instead of just on finding an OID ref, storing the last valid reference in it. This change helps simplify the code for allowing root commits. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
diff --git a/src/refs.c b/src/refs.c
index 17ec291..b88e047 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1480,8 +1480,9 @@ int git_reference_resolve(git_reference **resolved_ref, git_reference *ref)
for (i = 0; i < MAX_NESTING_LEVEL; ++i) {
reference_symbolic *ref_sym;
+ *resolved_ref = ref;
+
if (ref->type & GIT_REF_OID) {
- *resolved_ref = ref;
return GIT_SUCCESS;
}