git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Christian Couder" <christian.couder@gmail.com>,
	"Arjun Sreedharan" <arjun024@gmail.com>,
	git <git@vger.kernel.org>,
	"Christian Couder" <chriscool@tuxfamily.org>,
	"Nguyễn Thái Ngọc" <pclouds@gmail.com>
Subject: [PATCH 3/3] log-tree: use FLEX_ARRAY in name_decoration
Date: Tue, 26 Aug 2014 06:24:20 -0400	[thread overview]
Message-ID: <20140826102420.GC25687@peff.net> (raw)
In-Reply-To: <20140826102051.GA4885@peff.net>

We are already using the flex-array technique; let's
annotate it with our usual FLEX_ARRAY macro. Besides being
more readable, this is slightly more efficient on compilers
that understand flex-arrays.

Note that we need to bump the allocation in add_name_decoration,
which did not explicitly add one byte for the NUL terminator
of the string we putting into the flex-array (it did not
need to before, because the struct itself was over-allocated
by one byte).

Signed-off-by: Jeff King <peff@peff.net>
---
This could come first in the series, but doing it last means we only
have to update one spot. :)

 commit.h   | 2 +-
 log-tree.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/commit.h b/commit.h
index 263b49e..1516fc9 100644
--- a/commit.h
+++ b/commit.h
@@ -29,7 +29,7 @@ extern const char *commit_type;
 struct name_decoration {
 	struct name_decoration *next;
 	int type;
-	char name[1];
+	char name[FLEX_ARRAY];
 };
 
 enum decoration_type {
diff --git a/log-tree.c b/log-tree.c
index 7cbc4ee..fb60018 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -77,7 +77,7 @@ int parse_decorate_color_config(const char *var, const int ofs, const char *valu
 void add_name_decoration(enum decoration_type type, const char *name, struct object *obj)
 {
 	int nlen = strlen(name);
-	struct name_decoration *res = xmalloc(sizeof(struct name_decoration) + nlen);
+	struct name_decoration *res = xmalloc(sizeof(*res) + nlen + 1);
 	memcpy(res->name, name, nlen + 1);
 	res->type = type;
 	res->next = add_decoration(&name_decoration, obj, res);
-- 
2.1.0.346.ga0367b9

  parent reply	other threads:[~2014-08-26 10:24 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-24 14:17 [PATCH] bisect: save heap memory. allocate only the required amount Arjun Sreedharan
2014-08-24 15:10 ` Stefan Beller
2014-08-24 23:39   ` Junio C Hamano
2014-08-25 13:07     ` Jeff King
2014-08-25 21:36       ` Junio C Hamano
2014-08-26 11:03         ` Jeff King
2014-08-26 11:57           ` Ramsay Jones
2014-08-26 12:14             ` Jeff King
2014-08-26 12:37               ` Ramsay Jones
2014-08-26 12:43                 ` Jeff King
2014-08-26 12:59                   ` Ramsay Jones
2014-08-24 15:32 ` Ramsay Jones
2014-08-24 21:55   ` Arjun Sreedharan
2014-08-25 13:35 ` Jeff King
2014-08-25 14:06   ` Christian Couder
2014-08-25 15:00     ` Jeff King
2014-08-25 18:26       ` Junio C Hamano
2014-08-25 19:35         ` Jeff King
2014-08-25 20:27           ` Arjun Sreedharan
2014-08-25 21:11           ` Junio C Hamano
2014-08-26 10:20             ` [PATCH 0/3] name_decoration cleanups Jeff King
2014-08-26 10:23               ` [PATCH 1/3] log-tree: make add_name_decoration a public function Jeff King
2014-08-26 11:48                 ` Ramsay Jones
2014-08-26 12:17                   ` Jeff King
2014-08-26 10:23               ` [PATCH 2/3] log-tree: make name_decoration hash static Jeff King
2014-08-26 17:40                 ` Junio C Hamano
2014-08-26 17:43                   ` Jeff King
2014-08-26 19:25                     ` Junio C Hamano
2014-08-26 10:24               ` Jeff King [this message]
2014-08-27  0:30                 ` [PATCH 3/3] log-tree: use FLEX_ARRAY in name_decoration Eric Sunshine
2014-08-25 21:14 ` [PATCH] bisect: save heap memory. allocate only the required amount Junio C Hamano
2014-08-26  7:30   ` Arjun Sreedharan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140826102420.GC25687@peff.net \
    --to=peff@peff.net \
    --cc=arjun024@gmail.com \
    --cc=chriscool@tuxfamily.org \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=pclouds@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).