git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/6] test-hashmap: use ALLOC_ARRAY rather than bare malloc

From
Jeff King <peff@peff.net>
Date
Feb 14, 2018, 18:05 UTC
Message-ID
<20180214180545.GA9919@sigill.intra.peff.net>
In-Reply-To
<20180214180322.GA9190@sigill.intra.peff.net>
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>
---
The sizeof() thing came from Code AI's original email. I'm happy to
include a Reported-by there, but I wasn't sure of the correct entity to
credit. :)
 t/helper/test-hashmap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/t/helper/test-hashmap.c b/t/helper/test-hashmap.c
index 1145d51671..b36886bf35 100644
--- a/t/helper/test-hashmap.c
+++ b/t/helper/test-hashmap.c
@@ -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);
-- 
2.16.1.464.gc4bae515b7
Previous: Jeff KingNext: Code AI
Message 2 of 11 in “minor test-hashmap fixes”
  1. 0/6 minor test-hashmap fixesJeff King, Feb 14, 2018
  2. 1/6 test-hashmap: use ALLOC_ARRAY rather than bare mallocJeff King, Feb 14, 2018
  3. Code AIFeb 14, 2018
  4. 2/6 test-hashmap: check allocation computation for overflowJeff King, Feb 14, 2018
  5. 3/6 test-hashmap: use xsnprintf rather than snprintfJeff King, Feb 14, 2018
  6. 4/6 test-hashmap: use strbuf_getline rather than fgetsJeff King, Feb 14, 2018
  7. 5/6 test-hashmap: simplify alloc_test_entryJeff King, Feb 14, 2018
  8. Junio C HamanoFeb 14, 2018
  9. 6/6 test-hashmap: use "unsigned int" for hash storageJeff King, Feb 14, 2018
  10. Stefan BellerFeb 14, 2018
  11. Jeff KingFeb 14, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.