summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-07-13 02:42:08 -0400
committerJunio C Hamano <gitster@pobox.com>2014-07-28 10:14:33 -0700
commit5de7f500c13c8158696a68d86da1030313ddaf69 (patch)
tree73eee5d136d2b00c623c3fceceffab85c9e9b47e
parentc4ad00f8ccb59a0ae0735e8e32b203d4bd835616 (diff)
downloadgit-5de7f500c13c8158696a68d86da1030313ddaf69.tar.gz
alloc: factor out commit index
We keep a static counter to set the commit index on newly allocated objects. However, since we also need to set the index on any_objects which are converted to commits, let's make the counter available as a public function. While we're moving it, let's make sure the counter is allocated as an unsigned integer to match the index field in "struct commit". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--alloc.c9
-rw-r--r--cache.h1
2 files changed, 8 insertions, 2 deletions
diff --git a/alloc.c b/alloc.c
index fd2e32df8c..12afadfacd 100644
--- a/alloc.c
+++ b/alloc.c
@@ -82,12 +82,17 @@ void *alloc_object_node(void)
static struct alloc_state commit_state;
+unsigned int alloc_commit_index(void)
+{
+ static unsigned int count;
+ return count++;
+}
+
void *alloc_commit_node(void)
{
- static int commit_count;
struct commit *c = alloc_node(&commit_state, sizeof(struct commit));
c->object.type = OBJ_COMMIT;
- c->index = commit_count++;
+ c->index = alloc_commit_index();
return c;
}
diff --git a/cache.h b/cache.h
index cc46be4e0f..c708062df9 100644
--- a/cache.h
+++ b/cache.h
@@ -1354,6 +1354,7 @@ extern void *alloc_commit_node(void);
extern void *alloc_tag_node(void);
extern void *alloc_object_node(void);
extern void alloc_report(void);
+extern unsigned int alloc_commit_index(void);
/* trace.c */
__attribute__((format (printf, 1, 2)))