Re: bug in socket.h (and maybe many other kernel headerfiles)

Richard B. Johnson (root@chaos.analogic.com)
Fri, 17 Sep 1999 15:35:37 -0400 (EDT)


On Fri, 17 Sep 1999, Sean Hunter wrote:

On Fri, Sep 17, 1999 at 11:48:34AM +0200, Dipl.-Ing. Uwe Koloska wrote:
> Hello,
>
> I am not on this list by post by told so in REPORTING-BUGS.
>
> By installing kde-1.1.2 with gcc-2.95.1 I noticed a wrong declaration in
> /usr/incluce/linux/socket.h:109
>
> ANSI C++ forbids implicit conversion from `void *' in return
>
> The right ANSI way to do it is to return a literal "0".
>
> By taking a quick glance on the other headerfiles there are many places that
> uses NULL without explicit conversion.
>
> Maybe (adhearing to ANSI???) NULL has to be defined "0" and not (void*) ...
>

The kernel code is written in C. C requires that NULL be defined as
(void *)0. Returning a NULL as a literal 0 is incorrect in C. There
should not be any kernel headers included in an C++ code. Headers that
could be included are protected with conditional statements like:

#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL (void*)0
#endif
#endif

This was from <stdio.h>......

If this was flame-bait, forget it.

Cheers,
Dick Johnson
**** FILE SYSTEM WAS MODIFIED ****
Penguin : Linux version 2.3.13 on an i686 machine (400.59 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/