summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2016-08-13 14:21:27 +0200
committerJunio C Hamano <gitster@pobox.com>2016-08-13 19:48:07 -0700
commit5447a76aad4074c31e7c8a6299cc586435f385e9 (patch)
treeb20f9c8c067dcf65a0a47ff702efe8fe2fce05aa
parenta25716535ba7ba85322a1e9f20168f31c61dae81 (diff)
downloadgit-rs/pull-signed-tag.tar.gz
commit: use FLEX_ARRAY in struct merge_remote_descrs/pull-signed-tag
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>
-rw-r--r--commit.c3
-rw-r--r--commit.h2
2 files changed, 2 insertions, 3 deletions
diff --git a/commit.c b/commit.c
index fc3d6fb2c3..5f616b7201 100644
--- 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;
}
diff --git a/commit.h b/commit.h
index ed2a1f0265..15ee924f2f 100644
--- 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,