refs: dereference the value of the required pointer
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
@@ -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
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
Signed-off-by Greg Funni <[email protected]>---
refs: dereference the value of the required pointerCurrently, this always prints yes because required is non-null.
This is the wrong behavior. The boolean must be dereferenced.
Signed-off-by Greg Funni [email protected]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/2130refs/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)refs/debug.c +1
-1@@ -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
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 aoptimize_requiredfield tostruct 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!
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@@ -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