Skip to content

Commit f1093b0

Browse files
committed
Merge branch 'mh/packed-refs-do-one-ref-recursion'
Fix a NULL-pointer dereference during nested iterations over references (for example, when replace references are being used). * mh/packed-refs-do-one-ref-recursion: do_one_ref(): save and restore value of current_ref
2 parents 35f5eaa + d0cf51e commit f1093b0

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

refs.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,18 +634,22 @@ struct ref_entry_cb {
634634
static int do_one_ref(struct ref_entry *entry, void *cb_data)
635635
{
636636
struct ref_entry_cb *data = cb_data;
637+
struct ref_entry *old_current_ref;
637638
int retval;
639+
638640
if (prefixcmp(entry->name, data->base))
639641
return 0;
640642

641643
if (!(data->flags & DO_FOR_EACH_INCLUDE_BROKEN) &&
642644
!ref_resolves_to_object(entry))
643645
return 0;
644646

647+
/* Store the old value, in case this is a recursive call: */
648+
old_current_ref = current_ref;
645649
current_ref = entry;
646650
retval = data->fn(entry->name + data->trim, entry->u.value.sha1,
647651
entry->flag, data->cb_data);
648-
current_ref = NULL;
652+
current_ref = old_current_ref;
649653
return retval;
650654
}
651655

0 commit comments

Comments
 (0)