test-hashmap: use ALLOC_ARRAY rather than bare malloc
authorJeff King <peff@peff.net>
Wed, 14 Feb 2018 18:05:46 +0000 (13:05 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Feb 2018 18:31:09 +0000 (10:31 -0800)
These two array allocations have several minor flaws:

- they use bare malloc, rather than our error-checking
xmalloc

- they do a bare multiplication to determine the total
size (which in theory can overflow, though in this case
the sizes are all constants)

- they use sizeof(type), but the type in the second one
doesn't match the actual array (though it's "int" versus
"unsigned int", which are guaranteed by C99 to have the
same size)

None of these are likely to be problems in practice, and
this is just a test helper. But since people often look at
test helpers as reference code, we should do our best to
model the recommended techniques.

Switching to ALLOC_ARRAY fixes all three.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/helper/test-hashmap.c
index 1145d5167115a761d319b1e205500e765cd090cd..b36886bf35820ad418b86fc0e6fefb56674f75a7 100644 (file)
@@ -85,8 +85,8 @@ static void perf_hashmap(unsigned int method, unsigned int rounds)
        unsigned int *hashes;
        unsigned int i, j;
 
-       entries = malloc(TEST_SIZE * sizeof(struct test_entry *));
-       hashes = malloc(TEST_SIZE * sizeof(int));
+       ALLOC_ARRAY(entries, TEST_SIZE);
+       ALLOC_ARRAY(hashes, TEST_SIZE);
        for (i = 0; i < TEST_SIZE; i++) {
                snprintf(buf, sizeof(buf), "%i", i);
                entries[i] = alloc_test_entry(0, buf, strlen(buf), "", 0);