Thread (158 messages) 158 messages, 3 authors, 2025-10-16

Re: [PATCH 21/49] builtin/repack.c: factor our "generated_pack_install"

From: Taylor Blau <hidden>
Date: 2025-10-10 22:58:14

On Fri, Oct 10, 2025 at 02:14:49AM -0400, Jeff King wrote:
On Tue, Oct 07, 2025 at 04:26:26PM -0400, Taylor Blau wrote:
quoted
quoted
quoted
+	for_each_string_list_item(item, &names)
+		generated_pack_install((struct generated_pack *)item->util,
This cast should be unnecessary, right? `item->util` is a void pointer,
so C should do the cast implicitly.
It's unnecessary, but I dislike implicit casts from 'void*' to any other
type. This makes it clearer how we're supposed to interpret the value in
item->util, but I'm happy to change it to use the implicit cast if you
feel strongly about it.
I tend to avoid casts when possible, because they can mask unexpected
conversions. E.g., if item->util's type changed, your cast means we
would never notice it.

But that cuts both ways. If the prototype for generated_pack_install()
changes, it is only your cast that would tell the compiler that this
caller needs to be updated. Ultimately it is the spot that _sets_
item->util that needs to change, but hopefully flagging this spot would
point us in the right direction.

And that does seem more likely than item->util changing away from void.
(To be clear, I don't think either is that likely, I'm just musing on
whether casts like this are helpful in general).
OK, that's a very compelling argument. I'll drop the cast on my local
version.

(As a side note, it doesn't look like we mention this convention in our
CodingGuidelines, and we probably should, including the rationale that
you gave above here. That seems like another good candidate for
#leftoverbits.)

Thanks,
Taylor
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help