threads / patch / 64619

patch, 2 partsUse MEMZERO_ARRAY() a bit more

Subject: [PATCH 0/2] Use MEMZERO_ARRAY() a bit more

## tl;dr

4 messages between Dec 13, 2025 and Dec 15, 2025. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Junio C Hamano· Dec 13, 2025, 01:46 UTC · lore

This builds on Toon's memzero-array work to make "make coccicheck" pass at the tip of 'seen'

Junio C Hamano (2):
  coccicheck: emit the contents of cocci patch
  cocci: use MEMZERO_ARRAY() a bit more
 Makefile            | 2 +-
 diffcore-delta.c    | 4 ++--
 linear-assignment.c | 4 ++--
 shallow.c           | 4 ++--
 4 files changed, 7 insertions(+), 7 deletions(-)
-- 
2.52.0-357-gead5eaf5b3
Junio C Hamano· Dec 13, 2025, 01:46 UTC · re: Junio C Hamano · lore

[PATCH 1/2] coccicheck: emit the contents of cocci patch

Telling the user "you got some error messages" without showing what the errors are is almost useless in CI environment, as the errors cannot be examined without downloading build artifacts.

Arrange it to spew out the output when it fails.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to Makefile +1 −1
diff --git a/Makefile b/Makefile
index 7ca2118813..0117d0008c 100644
--- a/Makefile
+++ b/Makefile
@@ -3521,7 +3521,7 @@ else
 COCCICHECK_PATCH_MUST_BE_EMPTY_FILES = $(COCCICHECK_PATCHES_INTREE)
 endif
 coccicheck: $(COCCICHECK_PATCH_MUST_BE_EMPTY_FILES)
-	! grep -q ^ $(COCCICHECK_PATCH_MUST_BE_EMPTY_FILES) /dev/null
+	! grep ^ $(COCCICHECK_PATCH_MUST_BE_EMPTY_FILES) /dev/null
 
 # See contrib/coccinelle/README
 coccicheck-pending: coccicheck-test
-- 
2.52.0-357-gead5eaf5b3
Patrick Steinhardt· Dec 15, 2025, 05:14 UTC · re: Junio C Hamano · lore

Re: [PATCH 1/2] coccicheck: emit the contents of cocci patch

On Sat, Dec 13, 2025 at 10:46:27AM +0900, Junio C Hamano wrote:
Show 5 quoted lines
> Telling the user "you got some error messages" without showing what
> the errors are is almost useless in CI environment, as the errors
> cannot be examined without downloading build artifacts.
> 
> Arrange it to spew out the output when it fails.

Oh yes, please. I recently had CI fail and wanted to do a similar change already, but you beat me to it. Thanks!

Patrick
Junio C Hamano· Dec 13, 2025, 01:46 UTC · re: Junio C Hamano · lore

[PATCH 2/2] cocci: use MEMZERO_ARRAY() a bit more

Existing code in files that have been fairly stable trigger the "make coccicheck" suggestions due to the new check.

Rewrite them to use MEMZERO_ARRAY()
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 diffcore-delta.c    | 4 ++--
 linear-assignment.c | 4 ++--
 shallow.c           | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)
Show changes to 3 files +6 −6

diffcore-delta.c, linear-assignment.c, shallow.c

diff --git a/diffcore-delta.c b/diffcore-delta.c
index ba6cbee76b..2de9e9ccff 100644
--- a/diffcore-delta.c
+++ b/diffcore-delta.c
@@ -56,7 +56,7 @@ static struct spanhash_top *spanhash_rehash(struct spanhash_top *orig)
 			     st_mult(sizeof(struct spanhash), sz)));
 	new_spanhash->alloc_log2 = orig->alloc_log2 + 1;
 	new_spanhash->free = INITIAL_FREE(new_spanhash->alloc_log2);
-	memset(new_spanhash->data, 0, sizeof(struct spanhash) * sz);
+	MEMZERO_ARRAY(new_spanhash->data, sz);
 	for (i = 0; i < osz; i++) {
 		struct spanhash *o = &(orig->data[i]);
 		int bucket;
@@ -135,7 +135,7 @@ static struct spanhash_top *hash_chars(struct repository *r,
 			      st_mult(sizeof(struct spanhash), (size_t)1 << i)));
 	hash->alloc_log2 = i;
 	hash->free = INITIAL_FREE(i);
-	memset(hash->data, 0, sizeof(struct spanhash) * ((size_t)1 << i));
+	MEMZERO_ARRAY(hash->data, ((size_t)1 << i));
 
 	n = 0;
 	accum1 = accum2 = 0;
diff --git a/linear-assignment.c b/linear-assignment.c
index 5416cbcf40..97b4f75058 100644
--- a/linear-assignment.c
+++ b/linear-assignment.c
@@ -20,8 +20,8 @@ void compute_assignment(int column_count, int row_count, int *cost,
 	int i, j, phase;
 
 	if (column_count < 2) {
-		memset(column2row, 0, sizeof(int) * column_count);
-		memset(row2column, 0, sizeof(int) * row_count);
+		MEMZERO_ARRAY(column2row, column_count);
+		MEMZERO_ARRAY(row2column, row_count);
 		return;
 	}
 
diff --git a/shallow.c b/shallow.c
index d9cd4e219c..c20471cd7e 100644
--- a/shallow.c
+++ b/shallow.c
@@ -713,7 +713,7 @@ void assign_shallow_commits_to_refs(struct shallow_info *info,
 
 	if (used) {
 		int bitmap_size = DIV_ROUND_UP(pi.nr_bits, 32) * sizeof(uint32_t);
-		memset(used, 0, sizeof(*used) * info->shallow->nr);
+		MEMZERO_ARRAY(used, info->shallow->nr);
 		for (i = 0; i < nr_shallow; i++) {
 			const struct commit *c = lookup_commit(the_repository,
 							       &oid[shallow[i]]);
@@ -782,7 +782,7 @@ static void post_assign_shallow(struct shallow_info *info,
 
 	trace_printf_key(&trace_shallow, "shallow: post_assign_shallow\n");
 	if (ref_status)
-		memset(ref_status, 0, sizeof(*ref_status) * info->ref->nr);
+		MEMZERO_ARRAY(ref_status, info->ref->nr);
 
 	/* Remove unreachable shallow commits from "theirs" */
 	for (i = dst = 0; i < info->nr_theirs; i++) {
-- 
2.52.0-357-gead5eaf5b3

← back to recent threads