Re: RELEASE STOPPER? nonportable int64 constants in pg_crc.c
От | Peter Eisentraut |
---|---|
Тема | Re: RELEASE STOPPER? nonportable int64 constants in pg_crc.c |
Дата | |
Msg-id | Pine.LNX.4.30.0103212149270.1694-100000@peter.localdomain обсуждение исходный текст |
Ответ на | RELEASE STOPPER? nonportable int64 constants in pg_crc.c (Zeugswetter Andreas SB <ZeugswetterA@wien.spardat.at>) |
Ответы |
Re: RELEASE STOPPER? nonportable int64 constants in pg_crc.c
|
Список | pgsql-hackers |
Zeugswetter Andreas SB writes: > > Recent changes in pg_crc.c (64 bit CRC) introduced non portable constants of the form: > > -c -o pg_crc.o pg_crc.c > 287 | 0x0000000000000000, 0x42F0E1EBA9EA3693, > ............................a.................. > a - 1506-207 (W) Integer constant 0x42F0E1EBA9EA3693 out of range. > > I guess this will show up on a lot of non gcc platforms !!!!! > It shows no diffs in the regression tests! From what I understand, > failure would only show up after fast shutdown/crash. > > Attached is a patch, but I have no idea how portable that is. I don't think it's the answer either. The patch assumes that int64 == long long. The ugly solution might have to be: #if <int64 == long> #define L64 L #else #define L64 LL #endif const uint64 crc_table[256] = { 0x0000000000000000##L64, 0x42F0E1EBA9EA3693##L64, 0x85E1C3D753D46D26##L64, 0xC711223CFA3E5BB5##L64, ... -- Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/
В списке pgsql-hackers по дате отправления: