Junio C Hamano <gits...@pobox.com> wrote:
> 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.

Reply via email to