* Kevin P. Fleming <kpfleming@xxxxxxxxxx> [100714 15:59]: > On 07/14/2010 04:04 AM, Ævar Arnfjörð Bjarmason wrote: > > On Wed, Jul 14, 2010 at 03:01, Greg Brockman <gdb@xxxxxxx> wrote: > >> + 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. Bernhard R. Link -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html