diff options
author | Junio C Hamano <junkio@cox.net> | 2005-12-26 12:34:56 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-12-26 17:23:59 -0800 |
commit | 7e4a2a848377241b8fb4f624d1151bbf2f8d5814 (patch) | |
tree | 5b7f555c6aebd9c32b97dc27f3a18723549415f3 /index-pack.c | |
parent | 7d6fb370bc98e5d4723103dda0829b00c79da213 (diff) | |
download | git-7e4a2a848377241b8fb4f624d1151bbf2f8d5814.tar.gz git-7e4a2a848377241b8fb4f624d1151bbf2f8d5814.tar.xz |
avoid asking ?alloc() for zero bytes.
Avoid asking for zero bytes when that change simplifies overall
logic. Later we would change the wrapper to ask for 1 byte on
platforms that return NULL for zero byte request.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'index-pack.c')
-rw-r--r-- | index-pack.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/index-pack.c b/index-pack.c index d4ce3af58..541d7bc1c 100644 --- a/index-pack.c +++ b/index-pack.c @@ -352,18 +352,24 @@ static int sha1_compare(const void *_a, const void *_b) static void write_index_file(const char *index_name, unsigned char *sha1) { struct sha1file *f; - struct object_entry **sorted_by_sha = - xcalloc(nr_objects, sizeof(struct object_entry *)); - struct object_entry **list = sorted_by_sha; - struct object_entry **last = sorted_by_sha + nr_objects; + struct object_entry **sorted_by_sha, **list, **last; unsigned int array[256]; int i; SHA_CTX ctx; - for (i = 0; i < nr_objects; ++i) - sorted_by_sha[i] = &objects[i]; - qsort(sorted_by_sha, nr_objects, sizeof(sorted_by_sha[0]), - sha1_compare); + if (nr_objects) { + sorted_by_sha = + xcalloc(nr_objects, sizeof(struct object_entry *)); + list = sorted_by_sha; + last = sorted_by_sha + nr_objects; + for (i = 0; i < nr_objects; ++i) + sorted_by_sha[i] = &objects[i]; + qsort(sorted_by_sha, nr_objects, sizeof(sorted_by_sha[0]), + sha1_compare); + + } + else + sorted_by_sha = list = last = NULL; unlink(index_name); f = sha1create("%s", index_name); |