Skip to content

Commit 1958a6e

Browse files
KarthikNayakgitster
authored andcommitted
ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
This would remove the need of using a pointer to store refname. Mentored-by: Christian Couder <[email protected]> Mentored-by: Matthieu Moy <[email protected]> Signed-off-by: Karthik Nayak <[email protected]> Reviewed-by: Matthieu Moy <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 14de7fb commit 1958a6e

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

ref-filter.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -847,8 +847,10 @@ static struct ref_array_item *new_ref_array_item(const char *refname,
847847
const unsigned char *objectname,
848848
int flag)
849849
{
850-
struct ref_array_item *ref = xcalloc(1, sizeof(struct ref_array_item));
851-
ref->refname = xstrdup(refname);
850+
size_t len = strlen(refname);
851+
struct ref_array_item *ref = xcalloc(1, sizeof(struct ref_array_item) + len + 1);
852+
memcpy(ref->refname, refname, len);
853+
ref->refname[len] = '\0';
852854
hashcpy(ref->objectname, objectname);
853855
ref->flag = flag;
854856

@@ -889,7 +891,6 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid,
889891
static void free_array_item(struct ref_array_item *item)
890892
{
891893
free((char *)item->symref);
892-
free(item->refname);
893894
free(item);
894895
}
895896

ref-filter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ struct ref_array_item {
3232
int flag;
3333
const char *symref;
3434
struct atom_value *value;
35-
char *refname;
35+
char refname[FLEX_ARRAY];
3636
};
3737

3838
struct ref_array {

0 commit comments

Comments
 (0)