Re: [PATCH/RFC 4/4] Add interactive mode to git-shell for user-friendliness
From: Thomas Rast <hidden>
Date: 2016-06-15 22:49:08
[Please don't trim the Cc list without good reason.] Bernhard R. Link wrote:
* Kevin P. Fleming [off-list ref] [100714 15:59]:quoted
On 07/14/2010 04:04 AM, Ævar Arnfjörð Bjarmason wrote:quoted
On Wed, Jul 14, 2010 at 03:01, Greg Brockman [off-list ref] wrote:quoted
+ execl(prog, prog, (char *) NULL);Why the casting of NULL? It's not done in the builtin/help.c code. Anyway, if it was cast it should be to (const char *), shouldn't it?When a NULL sentinel is passed to a varargs function that only understands 'char *' arguments, the NULL must be cast specifically, otherwise it will appear in the varargs array as an int or a long.To be more specific: If NULL is (void *)0 then it does not need to be cast. Sadly the standard allows to define it as 0, and so it is on some systems. So to be portable it needs to be cast to be a pointer, otherwise the varargs argument is assumed to be an int.
Worse, the pointer representations need not be the same between types, even though that is a fairly exotic idea: http://c-faq.com/null/machexamp.html So it seems execl() must always have an explicitly-cast (char*)NULL sentinel. -- Thomas Rast trast@{inf,student}.ethz.ch