Subject: Re: [PATCH v3 21/20] convert: drop invalid comment for subprocess_entry

From: Eric Wong <[email-masked]>
Date: Tue, 8 Oct 2019 02:56:41 +0000

Junio C Hamano <[email-masked]> wrote:
> Eric Wong <[email-masked]> 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.