@@ -561,14 +561,6 @@ static void populate_value(struct refinfo *ref)
561
561
562
562
ref -> value = xcalloc (sizeof (struct atom_value ), used_atom_cnt );
563
563
564
- buf = get_obj (ref -> objectname , & obj , & size , & eaten );
565
- if (!buf )
566
- die ("missing object %s for %s" ,
567
- sha1_to_hex (ref -> objectname ), ref -> refname );
568
- if (!obj )
569
- die ("parse_object_buffer failed on %s for %s" ,
570
- sha1_to_hex (ref -> objectname ), ref -> refname );
571
-
572
564
/* Fill in specials first */
573
565
for (i = 0 ; i < used_atom_cnt ; i ++ ) {
574
566
const char * name = used_atom [i ];
@@ -621,6 +613,22 @@ static void populate_value(struct refinfo *ref)
621
613
}
622
614
}
623
615
616
+ for (i = 0 ; i < used_atom_cnt ; i ++ ) {
617
+ struct atom_value * v = & ref -> value [i ];
618
+ if (v -> s == NULL )
619
+ goto need_obj ;
620
+ }
621
+ return ;
622
+
623
+ need_obj :
624
+ buf = get_obj (ref -> objectname , & obj , & size , & eaten );
625
+ if (!buf )
626
+ die ("missing object %s for %s" ,
627
+ sha1_to_hex (ref -> objectname ), ref -> refname );
628
+ if (!obj )
629
+ die ("parse_object_buffer failed on %s for %s" ,
630
+ sha1_to_hex (ref -> objectname ), ref -> refname );
631
+
624
632
grab_values (ref -> value , 0 , obj , buf , size );
625
633
if (!eaten )
626
634
free (buf );
@@ -926,7 +934,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
926
934
927
935
memset (& cbdata , 0 , sizeof (cbdata ));
928
936
cbdata .grab_pattern = argv ;
929
- for_each_ref (grab_single_ref , & cbdata );
937
+ for_each_rawref (grab_single_ref , & cbdata );
930
938
refs = cbdata .grab_array ;
931
939
num_refs = cbdata .grab_cnt ;
932
940
0 commit comments