ancient sequence point bug
От | Peter Eisentraut |
---|---|
Тема | ancient sequence point bug |
Дата | |
Msg-id | 1366166131.8318.10.camel@vanquo.pezone.net обсуждение исходный текст |
Ответы |
Re: ancient sequence point bug
|
Список | pgsql-hackers |
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)); } In commit 1aebc361, another place in the same file was fixed like this: @@ -445,13 +455,13 @@ struct typmap while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) { (*app)->am_oid= tup->t_data->t_oid; - memmove((char *) &(*app++)->am_typ, - (char *) GETSTRUCT(tup), - sizeof((*app)->am_typ)); + memcpy((char *) &(*app)->am_typ, + (char *) GETSTRUCT(tup), + sizeof((*app)->am_typ)); + app++; } heap_endscan(scan); heap_close(rel, NoLock); I think the same (move the app++, and change to memcpy (optionally)) should be done in the first case as well.
В списке pgsql-hackers по дате отправления: