postgres.git / summary / log / commit / refs

commit    c90b85e4d9e4ae3bc26459cc54697e1adaa4315f
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Mon May 04 03:44:52 2015 +0000

    Second try at fixing warnings caused by commit 9b43d73b3f9bef27.
    
    Commit ef3f9e642d2b2bba suppressed one cause of warnings here, but
    recent clang on OS X is still unhappy because we're passing a "long"
    to abs().  The fact that tm_gmtoff is declared as long is no doubt a
    hangover from days when int might be only 16 bits; but Postgres has
    never been able to run on such machines, so we can just cast it to int
    with no worries.  For consistency, also cast to int in the other
    uses of tm_gmtoff in this stanza.
    
    Note: this code is still broken on machines that don't follow C99
    integer-division-truncates-towards-zero rules.  Given the lack of
    complaints about it, I don't feel a large desire to complicate things
    enough to cope with the pre-C99 rules.


src/backend/utils/adt/formatting.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 233fe2f0f8c..84e4db8416a 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -2503,11 +2503,11 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col break; case DCH_OF: INVALID_FOR_INTERVAL; - sprintf(s, "%+0*ld", S_FM(n->suffix) ? 0 : 3, tm->tm_gmtoff / SECS_PER_HOUR); + sprintf(s, "%+0*d", S_FM(n->suffix) ? 0 : 3, (int) tm->tm_gmtoff / SECS_PER_HOUR); s += strlen(s); - if (tm->tm_gmtoff % SECS_PER_HOUR != 0) + if ((int) tm->tm_gmtoff % SECS_PER_HOUR != 0) { - sprintf(s, ":%02d", abs(tm->tm_gmtoff % SECS_PER_HOUR) / SECS_PER_MINUTE); + sprintf(s, ":%02d", abs((int) tm->tm_gmtoff % SECS_PER_HOUR) / SECS_PER_MINUTE); s += strlen(s); } break; [parent: a4820434c1a6]