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

4 messages from 2025-12-13 to 2025-12-15. Participants: Junio C Hamano, Patrick Steinhardt.
Thread: https://gitlist.dev/t/64619

## Junio C Hamano, 2025-12-13 01:46

Subject: [PATCH 0/2] Use MEMZERO_ARRAY() a bit more
Message-ID: <20251213014628.3380826-1-gitster@pobox.com>
URL: https://gitlist.dev/e/20251213014628.3380826-1-gitster%40pobox.com

```
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, 2025-12-13 01:46

Subject: [PATCH 1/2] coccicheck: emit the contents of cocci patch
Message-ID: <20251213014628.3380826-2-gitster@pobox.com>
URL: https://gitlist.dev/e/20251213014628.3380826-2-gitster%40pobox.com
In-Reply-To: <20251213014628.3380826-1-gitster@pobox.com>

```
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(-)

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


```

## Junio C Hamano, 2025-12-13 01:46

Subject: [PATCH 2/2] cocci: use MEMZERO_ARRAY() a bit more
Message-ID: <20251213014628.3380826-3-gitster@pobox.com>
URL: https://gitlist.dev/e/20251213014628.3380826-3-gitster%40pobox.com
In-Reply-To: <20251213014628.3380826-1-gitster@pobox.com>

```
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(-)

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


```

## Patrick Steinhardt, 2025-12-15 05:14

Subject: Re: [PATCH 1/2] coccicheck: emit the contents of cocci patch
Message-ID: <aT-ZLICiwcX_eAgn@pks.im>
URL: https://gitlist.dev/e/aT-ZLICiwcX_eAgn%40pks.im
In-Reply-To: <20251213014628.3380826-2-gitster@pobox.com>

```
On Sat, Dec 13, 2025 at 10:46:27AM +0900, Junio C Hamano wrote:
> 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

```
