mmapped_ref_iterator_advance(): no peeled value for broken refs
If a reference is broken, suppress its peeled value. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
Sep 25, 2017 at 10:00 UTC
81b9b5aea7094cdef110c4ae91d9cc601510fe8b
1 file changed
+8
-2
refs/packed-backend.c
+8
-2
@@ -234,9 +234,15 @@ static int mmapped_ref_iterator_advance(struct ref_iterator *ref_iterator)
234
235
/*
236
* Regardless of what the file header said, we
237
- * definitely know the value of *this* reference:
237
+ * definitely know the value of *this* reference. But
238
+ * we suppress it if the reference is broken:
239
*/
239
- iter->base.flags |= REF_KNOWS_PEELED;
240
+ if ((iter->base.flags & REF_ISBROKEN)) {
241
+ oidclr(&iter->peeled);
242
+ iter->base.flags &= ~REF_KNOWS_PEELED;
243
+ } else {
244
+ iter->base.flags |= REF_KNOWS_PEELED;
245
+ }
246
} else {
247
oidclr(&iter->peeled);
248
}