From: Ramsay Jones <ramsay@ramsay1•demon.co.uk>
To: Jeff King <peff@peff•net>
Cc: Junio C Hamano <gitster@pobox•com>,
GIT Mailing-list <git@vger•kernel.org>
Subject: Re: [PATCH] alloc.c: remove alloc_raw_commit_node() function
Date: Wed, 18 Jun 2014 23:30:50 +0100 [thread overview]
Message-ID: <53A2131A.30900@ramsay1.demon.co.uk> (raw)
In-Reply-To: <20140618200854.GA23098@sigill.intra.peff.net>
On 18/06/14 21:08, Jeff King wrote:
> On Wed, Jun 18, 2014 at 08:52:46PM +0100, Ramsay Jones wrote:
>
[snip]
> Yeah, I noticed it while writing the patch but decided it wasn't worth
> the trouble to deal with (since after all, it's not advertised to any
> callers, the very thing that sparse is complaining about. :) ).
>
> I don't mind fixing it, though I really don't like repeating the
> contents of DEFINE_ALLOCATOR. I know it hasn't changed in a while, but
> it just feels wrong.
So, the patch below is a slight variation on the original patch.
I'm still slightly concerned about portability, but given that it
has been at least a decade since I last used a (pre-ANSI) compiler
which had a problem with this ...
[I have several versions of the C standard that I can use to check
up on the legalise, but I'm not sure I can be bothered! ;-) ]
ATB,
Ramsay Jones
-- >8 --
Subject: [PATCH] alloc.c: make alloc_raw_commit_node() a static function
In order to encapsulate the setting of the unique commit index, commit
969eba63 ("commit: push commit_index update into alloc_commit_node",
10-06-2014) introduced a (logically private) intermediary allocator
function. However, this function (alloc_raw_commit_node()) was declared
as a public function, which undermines its entire purpose.
Add a scope parameter to the DEFINE_ALLOCATOR macro to allow the
raw commit allocator definition to include the 'static' qualifier.
Noticed by sparse ("symbol 'alloc_raw_commit_node' was not declared.
Should it be static?").
Signed-off-by: Ramsay Jones <ramsay@ramsay1•demon.co.uk>
---
alloc.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/alloc.c b/alloc.c
index eb22a45..5392d13 100644
--- a/alloc.c
+++ b/alloc.c
@@ -18,9 +18,12 @@
#define BLOCKING 1024
-#define DEFINE_ALLOCATOR(name, type) \
+#define PUBLIC
+#define PRIVATE static
+
+#define DEFINE_ALLOCATOR(scope, name, type) \
static unsigned int name##_allocs; \
-void *alloc_##name##_node(void) \
+scope void *alloc_##name##_node(void) \
{ \
static int nr; \
static type *block; \
@@ -45,11 +48,11 @@ union any_object {
struct tag tag;
};
-DEFINE_ALLOCATOR(blob, struct blob)
-DEFINE_ALLOCATOR(tree, struct tree)
-DEFINE_ALLOCATOR(raw_commit, struct commit)
-DEFINE_ALLOCATOR(tag, struct tag)
-DEFINE_ALLOCATOR(object, union any_object)
+DEFINE_ALLOCATOR(PUBLIC, blob, struct blob)
+DEFINE_ALLOCATOR(PUBLIC, tree, struct tree)
+DEFINE_ALLOCATOR(PRIVATE, raw_commit, struct commit)
+DEFINE_ALLOCATOR(PUBLIC, tag, struct tag)
+DEFINE_ALLOCATOR(PUBLIC, object, union any_object)
void *alloc_commit_node(void)
{
--
2.0.0
next prev parent reply other threads:[~2014-06-18 22:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-18 19:52 [PATCH] alloc.c: remove alloc_raw_commit_node() function Ramsay Jones
2014-06-18 20:08 ` Jeff King
2014-06-18 22:30 ` Ramsay Jones [this message]
2014-06-19 9:19 ` Jeff King
2014-06-19 9:55 ` Ramsay Jones
2014-06-19 20:32 ` Junio C Hamano
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=53A2131A.30900@ramsay1.demon.co.uk \
--to=ramsay@ramsay1$(echo .)demon.co.uk \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=peff@peff$(echo .)net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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