Commit 2bbc6e8a authored by Olga Telezhnaya's avatar Olga Telezhnaya Committed by Junio C Hamano

ref-filter: get rid of duplicate code

Make one function from 2 duplicate pieces and invoke it twice.
Signed-off-by: Olga Telezhnaya's avatarOlga Telezhnaia <[email protected]>
Mentored-by: Christian Couder's avatarChristian Couder <[email protected]>
Mentored by: Jeff King <[email protected]>
Signed-off-by: default avatarJunio C Hamano <[email protected]>
parent 6bd396be
......@@ -1354,15 +1354,31 @@ static const char *get_refname(struct used_atom *atom, struct ref_array_item *re
return show_ref(&atom->u.refname, ref->refname);
}
static void get_object(struct ref_array_item *ref, const struct object_id *oid,
int deref, struct object **obj)
{
int eaten;
unsigned long size;
void *buf = get_obj(oid, obj, &size, &eaten);
if (!buf)
die(_("missing object %s for %s"),
oid_to_hex(oid), ref->refname);
if (!*obj)
die(_("parse_object_buffer failed on %s for %s"),
oid_to_hex(oid), ref->refname);
grab_values(ref->value, deref, *obj, buf, size);
if (!eaten)
free(buf);
}
/*
* Parse the object referred by ref, and grab needed value.
*/
static void populate_value(struct ref_array_item *ref)
{
void *buf;
struct object *obj;
int eaten, i;
unsigned long size;
int i;
const struct object_id *tagged;
ref->value = xcalloc(used_atom_cnt, sizeof(struct atom_value));
......@@ -1483,17 +1499,7 @@ static void populate_value(struct ref_array_item *ref)
return;
need_obj:
buf = get_obj(&ref->objectname, &obj, &size, &eaten);
if (!buf)
die(_("missing object %s for %s"),
oid_to_hex(&ref->objectname), ref->refname);
if (!obj)
die(_("parse_object_buffer failed on %s for %s"),
oid_to_hex(&ref->objectname), ref->refname);
grab_values(ref->value, 0, obj, buf, size);
if (!eaten)
free(buf);
get_object(ref, &ref->objectname, 0, &obj);
/*
* If there is no atom that wants to know about tagged
......@@ -1514,16 +1520,7 @@ static void populate_value(struct ref_array_item *ref)
* is not consistent with what deref_tag() does
* which peels the onion to the core.
*/
buf = get_obj(tagged, &obj, &size, &eaten);
if (!buf)
die(_("missing object %s for %s"),
oid_to_hex(tagged), ref->refname);
if (!obj)
die(_("parse_object_buffer failed on %s for %s"),
oid_to_hex(tagged), ref->refname);
grab_values(ref->value, 1, obj, buf, size);
if (!eaten)
free(buf);
get_object(ref, tagged, 1, &obj);
}
/*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment