Re: [PATCH v3 21/20] convert: drop invalid comment for subprocess_entry
- From
- Eric Wong <e@80x24.org>
- Date
- Oct 8, 2019, 02:56 UTC
- Message-ID
- <20191008025641.zinxoqsrncgzyjcq@dcvr>
- In-Reply-To
- <xmqq4l0koucn.fsf@gitster-ct.c.googlers.com>
Junio C Hamano <gitster@pobox.com> wrote:
Show 33 quoted lines
> Eric Wong <e@80x24.org> writes:
>
> > "struct hashmap_entry" inside "struct subprocess_entry"
> > no longer needs to be the first member of any struct,
> > so the old comment is no longer true.
>
> Hmm, is that true?
>
> struct cmd2process {
> struct subprocess_entry subprocess;
> unsigned int supported_capabilities;
> };
>
> static int start_multi_file_filter_fn(struct subprocess_entry *subprocess)
> {
> static int versions[] = {2, 0};
> static struct subprocess_capability capabilities[] = {
> { "clean", CAP_CLEAN },
> { "smudge", CAP_SMUDGE },
> { "delay", CAP_DELAY },
> { NULL, 0 }
> };
> struct cmd2process *entry = (struct cmd2process *)subprocess;
> return subprocess_handshake(subprocess, "git-filter", versions, NULL,
> capabilities,
> &entry->supported_capabilities);
> }
>
> The cast "struct subprocess_entry *" to "struct cmd2process *" we
> see here does require that the address of the subprocess field must
> be the same as the address of the structure itself. So I'd have to
> say that the comment still is true, but not for the reasons of what
> is in "struct subprocess_entry".Oops, right. Let's just leave it at 20 patches for this series and skip this one, for now.
I seem to recall there's a bunch of places where we do casts like that which could be rewritten more flexibly with container_of.