From 1e1ade1833db42a75f2792b4472748721f73c827 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Thu, 9 Dec 2010 01:43:32 -0500 Subject: [PATCH] describe: Do not use a flex array in struct commit_name Now add_to_known_names overwrites commit_names in place when multiple tags point to the same commit. This will make it easier to store commit_names in a hash table. Signed-off-by: Anders Kaseorg Signed-off-by: Junio C Hamano --- builtin/describe.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/builtin/describe.c b/builtin/describe.c index 700f740154..5b8461d87f 100644 --- a/builtin/describe.c +++ b/builtin/describe.c @@ -38,7 +38,7 @@ struct commit_name { unsigned prio:2; /* annotated tag = 2, tag = 1, head = 0 */ unsigned name_checked:1; unsigned char sha1[20]; - char path[FLEX_ARRAY]; /* more */ + const char *path; }; static const char *prio_names[] = { "head", "lightweight", "annotated", @@ -85,15 +85,15 @@ static void add_to_known_names(const char *path, struct commit_name *e = commit->util; struct tag *tag = NULL; if (replace_name(e, prio, sha1, &tag)) { - size_t len = strlen(path)+1; - free(e); - e = xmalloc(sizeof(struct commit_name) + len); + if (!e) { + e = xmalloc(sizeof(struct commit_name)); + commit->util = e; + } e->tag = tag; e->prio = prio; e->name_checked = 0; hashcpy(e->sha1, sha1); - memcpy(e->path, path, len); - commit->util = e; + e->path = path; } found_names = 1; } -- 2.11.4.GIT