diff options
Diffstat (limited to 'refs/reftable-backend.c')
| -rw-r--r-- | refs/reftable-backend.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/refs/reftable-backend.c b/refs/reftable-backend.c index bf4446afd3..db2ae1dfcb 100644 --- a/refs/reftable-backend.c +++ b/refs/reftable-backend.c @@ -454,6 +454,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; @@ -493,8 +494,11 @@ static int reftable_ref_iterator_advance(struct ref_iterator *ref_iterator) refs->base.repo->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, refs->base.repo->hash_algo); break; default: @@ -522,6 +526,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; |
