All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "René Scharfe" <l.s.r@web.de>,
	"Jeff Hostetler" <jeffhostetler@github.com>,
	"Johannes Sixt" <j6t@kdbg.org>
Cc: Git List <git@vger.kernel.org>
Subject: Re: [PATCH v2 2/4] do full type check in BARF_UNLESS_COPYABLE
Date: Mon, 09 Jan 2023 13:27:40 +0900	[thread overview]
Message-ID: <xmqqfsckwcw3.fsf@gitster.g> (raw)
In-Reply-To: <3e04e283-cad0-7be4-d85c-65d0a52289e2@web.de> ("René Scharfe"'s message of "Sun, 8 Jan 2023 11:10:59 +0100")

René Scharfe <l.s.r@web.de> writes:

> We compare the types of the elements, so effectively we do this:
>
>    __builtin_types_compatible_p(__typeof__(const char *),  __typeof__(char *))
>
> ... which returns 0.

True.  I wonder if (const const char *) and (const char *) are
deemed compatible?  Even if so, probably we cannot write

	__builtin_types_compatible_p(const __typeof__(*(dst)),
				     const __typeof__(*(src)))

so that line of thoguht would lead nowhere X-<.

> We can remove the const like we already do for Visual Studio.  But
> then we have to add two casts when passing on argv2, like in
> mingw_execv(), because adding a const to a pointer of a pointer
> must be done explicitly in C (even though Visual Studio seems to
> do it implicitly without complaining).  Feels a bit silly. :-|

Indeed.  Let's see what folks, whom "git blame" tells us to be area
experts around here, think.  The "if _MSC, add const" was added in
12fb9bd8 (msvc: mark a variable as non-const, 2019-06-19) by JeffH,
and try_shell_exec() function itself came from f1a4dfb8 (Windows:
Wrap execve so that shell scripts can be invoked., 2007-12-04),
added by J6t.

> --- >8 ---
> Subject: [PATCH 1.5/4] mingw: make argv2 in try_shell_exec() non-const
>
> Prepare for a stricter type check in COPY_ARRAY by removing the const
> qualifier of argv2, like we already do to placate Visual Studio.  We
> have to add it back using explicit casts when actually using the
> variable, unfortunately, because GCC (rightly) refuses to add it
> implicitly.  Similar casts are already used in mingw_execv().
>
> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
>  compat/mingw.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/compat/mingw.c b/compat/mingw.c
> index d614f156df..e131eb9b07 100644
> --- a/compat/mingw.c
> +++ b/compat/mingw.c
> @@ -1839,16 +1839,13 @@ static int try_shell_exec(const char *cmd, char *const *argv)
>  	if (prog) {
>  		int exec_id;
>  		int argc = 0;
> -#ifndef _MSC_VER
> -		const
> -#endif
>  		char **argv2;
>  		while (argv[argc]) argc++;
>  		ALLOC_ARRAY(argv2, argc + 1);
>  		argv2[0] = (char *)cmd;	/* full path to the script file */
>  		COPY_ARRAY(&argv2[1], &argv[1], argc);
> -		exec_id = trace2_exec(prog, argv2);
> -		pid = mingw_spawnv(prog, argv2, 1);
> +		exec_id = trace2_exec(prog, (const char **)argv2);
> +		pid = mingw_spawnv(prog, (const char **)argv2, 1);
>  		if (pid >= 0) {
>  			int status;
>  			if (waitpid(pid, &status, 0) < 0)
> --
> 2.38.1.windows.1

  reply	other threads:[~2023-01-09  4:35 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-30 21:51 [PATCH 0/3] COPY_ARRAY, MOVE_ARRAY, DUP_ARRAY René Scharfe
2022-12-30 21:56 ` [PATCH 1/3] do full type check in COPY_ARRAY and MOVE_ARRAY René Scharfe
2023-01-01  3:03   ` Junio C Hamano
2023-01-01  3:59     ` Junio C Hamano
2023-01-01  7:41       ` René Scharfe
2023-01-01 10:45         ` René Scharfe
2023-01-01 12:11           ` Junio C Hamano
2023-01-01 12:32             ` René Scharfe
2023-01-01 12:46               ` Junio C Hamano
2022-12-30 22:02 ` [PATCH 2/3] add DUP_ARRAY René Scharfe
2022-12-30 22:03 ` [PATCH 3/3] use DUP_ARRAY René Scharfe
2023-01-01 21:05 ` [PATCH v2 0/4] COPY_ARRAY, MOVE_ARRAY, DUP_ARRAY René Scharfe
2023-01-01 21:08   ` [PATCH v2 1/4] factor out BARF_UNLESS_COPYABLE René Scharfe
2023-01-01 21:11   ` [PATCH v2 2/4] do full type check in BARF_UNLESS_COPYABLE René Scharfe
2023-01-08  7:28     ` Junio C Hamano
2023-01-08 10:10       ` René Scharfe
2023-01-09  4:27         ` Junio C Hamano [this message]
2023-01-09 18:08           ` Jeff Hostetler
2023-01-01 21:14   ` [PATCH v2 3/4] add DUP_ARRAY René Scharfe
2023-01-01 21:16   ` [PATCH v2 4/4] use DUP_ARRAY René Scharfe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqfsckwcw3.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=j6t@kdbg.org \
    --cc=jeffhostetler@github.com \
    --cc=l.s.r@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.