mirror of
https://github.com/postgres/postgres.git
synced 2025-05-03 22:24:49 +03:00
Dodge a compiler bug affecting timetz_zone/timetz_izone.
This avoids a compiler bug occurring in AIX's xlc, even in pretty late-model revisions. Buildfarm testing has now confirmed that only 64-bit xlc is affected. Although we are contemplating dropping support for xlc in v17, it's still supported in the back branches, so we need this fix. Back-patch of code changes from HEAD commit 19fa97731. (The test cases were already back-patched, in 4a427b82c et al.) Discussion: https://postgr.es/m/CA+hUKGK=DOC+hE-62FKfZy=Ybt5uLkrg3zCZD-jFykM-iPn8yw@mail.gmail.com
This commit is contained in:
parent
9208c6f043
commit
85c9dda818
@ -3102,10 +3102,11 @@ timetz_zone(PG_FUNCTION_ARGS)
|
||||
result = (TimeTzADT *) palloc(sizeof(TimeTzADT));
|
||||
|
||||
result->time = t->time + (t->zone - tz) * USECS_PER_SEC;
|
||||
/* C99 modulo has the wrong sign convention for negative input */
|
||||
while (result->time < INT64CONST(0))
|
||||
result->time += USECS_PER_DAY;
|
||||
while (result->time >= USECS_PER_DAY)
|
||||
result->time -= USECS_PER_DAY;
|
||||
if (result->time >= USECS_PER_DAY)
|
||||
result->time %= USECS_PER_DAY;
|
||||
|
||||
result->zone = tz;
|
||||
|
||||
@ -3135,10 +3136,11 @@ timetz_izone(PG_FUNCTION_ARGS)
|
||||
result = (TimeTzADT *) palloc(sizeof(TimeTzADT));
|
||||
|
||||
result->time = time->time + (time->zone - tz) * USECS_PER_SEC;
|
||||
/* C99 modulo has the wrong sign convention for negative input */
|
||||
while (result->time < INT64CONST(0))
|
||||
result->time += USECS_PER_DAY;
|
||||
while (result->time >= USECS_PER_DAY)
|
||||
result->time -= USECS_PER_DAY;
|
||||
if (result->time >= USECS_PER_DAY)
|
||||
result->time %= USECS_PER_DAY;
|
||||
|
||||
result->zone = tz;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user