From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Neil Conway <neilc(at)samurai(dot)com> |
Cc: | Kurt Roeckx <Q(at)ping(dot)be>, PostgreSQL Patches <pgsql-patches(at)postgresql(dot)org> |
Subject: | Re: remove obsolete NULL casts |
Date: | 2004-01-06 17:38:29 |
Message-ID: | 16854.1073410709@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-patches |
Neil Conway <neilc(at)samurai(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Neil Conway | 2004-01-06 18:06:17 | Re: remove 'noversion' from standalone backend |
Previous Message | Neil Conway | 2004-01-06 17:27:19 | Re: make "wal_debug" GUC var a boolean |