Re: NULL passed as an argument to memcmp() in parse_func.c

From: Piotr Stefaniak <postgres(at)piotr-stefaniak(dot)me>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: NULL passed as an argument to memcmp() in parse_func.c
Date: 2015-06-22 19:15:35
Message-ID: BLU436-SMTP57ACDE6DDEC80818C4E6CBF2A10@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 06/22/2015 08:55 PM, Tom Lane wrote:
> Are you seeing any observable problem here, and if so what is it?
Not yet; perhaps with GCC 7 or 8...

> If I recall that code correctly, the assumption was that if the third
> argument is zero then memcmp() must not fetch any bytes (not should not,
> but MUST not) and therefore it doesn't matter if we pass a NULL.
It's not about fetching any bytes, it's about passing an invalid pointer
(a null pointer in this case) which gives a compiler the opportunity to
apply an optimization. For example, glibc has memcpy marked as
__nonnull(1,2).

But if you remain unconvinced then I yield.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2015-06-22 19:17:34 Re: NULL passed as an argument to memcmp() in parse_func.c
Previous Message Tom Lane 2015-06-22 18:55:22 Re: NULL passed as an argument to memcmp() in parse_func.c