Re: remove obsolete NULL casts - Mailing list pgsql-patches

From Tom Lane
Subject Re: remove obsolete NULL casts
Date
Msg-id 16854.1073410709@sss.pgh.pa.us
Whole thread Raw
In response to Re: remove obsolete NULL casts  (Neil Conway <neilc@samurai.com>)
List pgsql-patches
Neil Conway <neilc@samurai.com> writes:
> Ah, good catch! Upon further investigation, you're completely correct:
> technically, you need to cast the NULL literal to a pointer type in a
> function call if (a) there is no prototype for the function, or (b)
> the function is a varargs function (which execl() is).

> I'd imagine it would only make a difference on a machine where the
> null pointer is represented by a non-zero bit pattern (i.e. it
> shouldn't make a difference on any modern machine),

Actually, I think it would be likely to be important on any machine
where sizeof(pointer) != sizeof(int), which is reasonably common
in 64-bit-pointer land.  C99 saith

       An integer constant expression with  the  value  0,  or
       such  an  expression  cast  to type void *, is called a null
       pointer constant.

So one plausible definition of NULL is just "#define NULL 0", and
without the explicit cast it would probably be taken as an integer
argument, which would be the wrong size.

> but we should do this correctly, of course.

Check.

> I won't bother posting an updated patch, but I'll include your fix in
> the patch when I apply it. Thanks again.

Sounds good.

            regards, tom lane

pgsql-patches by date:

Previous
From: Neil Conway
Date:
Subject: Re: make "wal_debug" GUC var a boolean
Next
From: Neil Conway
Date:
Subject: Re: remove 'noversion' from standalone backend