diff options
Diffstat (limited to 'refs/reftable-backend.c')
-rw-r--r-- | refs/reftable-backend.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/refs/reftable-backend.c b/refs/reftable-backend.c index fbe74c239d..50a072b97b 100644 --- a/refs/reftable-backend.c +++ b/refs/reftable-backend.c @@ -455,6 +455,7 @@ static int reftable_ref_iterator_advance(struct ref_iterator *ref_iterator) struct reftable_ref_iterator *iter = (struct reftable_ref_iterator *)ref_iterator; struct reftable_ref_store *refs = iter->refs; + const char *referent = NULL; while (!iter->err) { int flags = 0; @@ -494,8 +495,12 @@ static int reftable_ref_iterator_advance(struct ref_iterator *ref_iterator) the_repository->hash_algo); break; case REFTABLE_REF_SYMREF: - if (!refs_resolve_ref_unsafe(&iter->refs->base, iter->ref.refname, - RESOLVE_REF_READING, &iter->oid, &flags)) + referent = refs_resolve_ref_unsafe(&iter->refs->base, + iter->ref.refname, + RESOLVE_REF_READING, + &iter->oid, + &flags); + if (!referent) oidclr(&iter->oid, the_repository->hash_algo); break; default: @@ -523,6 +528,7 @@ static int reftable_ref_iterator_advance(struct ref_iterator *ref_iterator) continue; iter->base.refname = iter->ref.refname; + iter->base.referent = referent; iter->base.oid = &iter->oid; iter->base.flags = flags; |