git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 4/4] commit: use FLEX_ARRAY in struct merge_remote_desc

From
René Scharfe <l.s.r@web.de>
Date
Aug 13, 2016, 12:21 UTC
Message-ID
<57AF10C7.8070001@web.de>
In-Reply-To
<57AF0D8E.6040309@web.de>

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>
---
 commit.c | 3 +--
 commit.h | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/commit.c b/commit.c
index 8bad713..ba6dee3 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 84bb507..32e1a11 100644
--- a/commit.h
+++ b/commit.h
@@ -362,7 +362,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,
-- 
2.9.3
Previous: René ScharfeNext: Jeff King
Message 7 of 8 in “commit: introduce set_merge_remote_desc()”
  1. commit: introduce set_merge_remote_desc()René Scharfe, Aug 13, 2016
  2. Jeff KingAug 13, 2016
  3. René ScharfeAug 13, 2016
  4. 1/4 commit: use xstrdup() in get_merge_parent()René Scharfe, Aug 13, 2016
  5. 2/4 commit: factor out set_merge_remote_desc()René Scharfe, Aug 13, 2016
  6. 3/4 merge-recursive: fix verbose output for multiple base treesRené Scharfe, Aug 13, 2016
  7. 4/4 commit: use FLEX_ARRAY in struct merge_remote_descRené Scharfe, Aug 13, 2016
  8. Jeff KingAug 13, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.