From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: ancient sequence point bug |
Date: | 2013-04-17 02:51:39 |
Message-ID: | 16321.1366167099@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Peter Eisentraut <peter_e(at)gmx(dot)net> writes:
> This code in bootstrap.c contains a sequence point violation (or
> whatever that is really called):
> while ((tup = heap_getnext(scan, ForwardScanDirection)) != NULL)
> {
> (*app)->am_oid = HeapTupleGetOid(tup);
> memmove((char *) &(*app++)->am_typ,
> (char *) GETSTRUCT(tup),
> sizeof((*app)->am_typ));
> }
What exactly is the violation? sizeof() is a side-effect-free compile
time constant, and the first value to be passed to memmove seems
perfectly well defined.
I grant that this is not terribly good coding style, but I don't believe
there's an actual risk here.
> In commit 1aebc361, another place in the same file was fixed like this:
Well, I don't really remember why I did that twelve years ago, but
seeing that there are a number of purely-cosmetic changes in that
commit, I'm thinking it was only meant to be cosmetic.
I certainly have no objection to making this code look more like that
code, I'm just not seeing that it's a bug.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Dann Corbit | 2013-04-17 03:18:35 | Re: ancient sequence point bug |
Previous Message | Peter Eisentraut | 2013-04-17 02:35:31 | ancient sequence point bug |