Skip to contentSkip to conversation

refs: dereference the value of the required pointer

PATCH In review AZero13 via GitGitGadget 4 participants 4 messages Dec 18, 2025 – Dec 25, 2025

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 refs: dereference the value of the required pointer

From: Greg Funni <[email protected]>

Currently, this always prints yes because required is non-null.

This is the wrong behavior. The boolean must be
dereferenced.

---
refs: dereference the value of the required pointer

Currently, this always prints yes because required is non-null.

This is the wrong behavior. The boolean must be dereferenced.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2130%2FAZero13%2Fref-cache-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2130/AZero13/ref-cache-v1
Pull-Request: https://github.com/git/git/pull/2130

 refs/debug.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
refs/debug.c +1 -1
index 3e31228c9a..639db0f26e 100644
@@ -139,7 +139,7 @@ static int debug_optimize_required(struct ref_store *ref_store,
 	struct debug_ref_store *drefs = (struct debug_ref_store *)ref_store;
 	int res = drefs->refs->be->optimize_required(drefs->refs, opts, required);
 	trace_printf_key(&trace_refs, "optimize_required: %s, res: %d\n",
-			 required ? "yes" : "no", res);
+			 *required ? "yes" : "no", res);
 	return res;
 }
 

base-commit: c4a0c8845e2426375ad257b6c221a3a7d92ecfda

Signature · 1 line
gitgitgadget
#1 lore raw
Quoted 6 lines · "AZero13 via GitGitGadget" <[email protected]> writes:

From: Greg Funni <[email protected]>

Currently, this always prints yes because required is non-null.

This is the wrong behavior. The boolean must be
dereferenced.

The line is blamed to f6c5ca38 (refs: add a optimize_required field to struct ref_storage_be, 2025-11-08); the author CC'ed for an Ack.

Thanks.

Quoted 33 lines

---
refs: dereference the value of the required pointer

Currently, this always prints yes because required is non-null.

This is the wrong behavior. The boolean must be dereferenced.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2130%2FAZero13%2Fref-cache-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2130/AZero13/ref-cache-v1
Pull-Request: https://github.com/git/git/pull/2130

 refs/debug.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
refs/debug.c +1 -1
index 3e31228c9a..639db0f26e 100644
@@ -139,7 +139,7 @@ static int debug_optimize_required(struct ref_store *ref_store,
 	struct debug_ref_store *drefs = (struct debug_ref_store *)ref_store;
 	int res = drefs->refs->be->optimize_required(drefs->refs, opts, required);
 	trace_printf_key(&trace_refs, "optimize_required: %s, res: %d\n",
-			 required ? "yes" : "no", res);
+			 *required ? "yes" : "no", res);
 	return res;
 }
 

base-commit: c4a0c8845e2426375ad257b6c221a3a7d92ecfda

#3 lore raw
In reply to AZero13 via GitGitGadget

refs/debug.c static int debug_optimize_required(struct ref_store *ref_store, · line 144

Quoted 12 lines · On Thu, Dec 18, 2025 at 04:10:49PM +0000, AZero13 via GitGitGadget wrote:
refs/debug.c +1 -1
index 3e31228c9a..639db0f26e 100644
@@ -139,7 +139,7 @@ static int debug_optimize_required(struct ref_store *ref_store,
 	struct debug_ref_store *drefs = (struct debug_ref_store *)ref_store;
 	int res = drefs->refs->be->optimize_required(drefs->refs, opts, required);
 	trace_printf_key(&trace_refs, "optimize_required: %s, res: %d\n",
-			 required ? "yes" : "no", res);
+			 *required ? "yes" : "no", res);
 	return res;
 }

Makes sense. One question is whether required will always be non-NULL so that we can unconditionally dereference the pointer like this. But from going through the implementations I can see that the pointer already does get dereferenced unconditionally, so this fix is safe.

Thanks!

Patrick

#2 lore raw
In reply to Junio C Hamano
Quoted 6 lines · Junio C Hamano
Quoted 4 lines · "AZero13 via GitGitGadget" <[email protected]> writes:

From: Greg Funni <[email protected]>

Currently, this always prints yes because required is non-null.

Quoted 9 lines
Quoted 2 lines

This is the wrong behavior. The boolean must be
dereferenced.

The line is blamed to f6c5ca38 (refs: add a optimize_required field to struct ref_storage_be, 2025-11-08); the author CC'ed for an Ack.

Thanks.

My responses are a bit slow due to being on holiday.

The patch looks good to me, the fix makes sense. Thanks both!