]> granicus.if.org Git - git/commitdiff
commit: use FLEX_ARRAY in struct merge_remote_desc
authorRené Scharfe <l.s.r@web.de>
Sat, 13 Aug 2016 12:21:27 +0000 (14:21 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 14 Aug 2016 02:48:07 +0000 (19:48 -0700)
Convert the name member of struct merge_remote_desc to a FLEX_ARRAY and
use FLEX_ALLOC_STR to build the struct.  This halves the number of
memory allocations, saves the storage for a pointer and avoids an
indirection when reading the name.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit.c
commit.h

index fc3d6fb2c372a7f668ed41c94a9abb8e4ebd18ee..5f616b720106aaf2682fdaca8f6c955232c2dd59 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -1580,9 +1580,8 @@ void set_merge_remote_desc(struct commit *commit,
                           const char *name, struct object *obj)
 {
        struct merge_remote_desc *desc;
-       desc = xmalloc(sizeof(*desc));
+       FLEX_ALLOC_STR(desc, name, name);
        desc->obj = obj;
-       desc->name = xstrdup(name);
        commit->util = desc;
 }
 
index ed2a1f0265506ff7153d9b8ea584ca268180a0c3..15ee924f2f02998d742464de6c31b55d391426b3 100644 (file)
--- a/commit.h
+++ b/commit.h
@@ -356,7 +356,7 @@ extern void for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *
 
 struct merge_remote_desc {
        struct object *obj; /* the named object, could be a tag */
-       const char *name;
+       char name[FLEX_ARRAY];
 };
 #define merge_remote_util(commit) ((struct merge_remote_desc *)((commit)->util))
 extern void set_merge_remote_desc(struct commit *commit,