Index: src/backend/utils/adt/datetime.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/utils/adt/datetime.c,v retrieving revision 1.124 diff -c -r1.124 datetime.c *** src/backend/utils/adt/datetime.c 19 Jan 2004 19:04:40 -0000 1.124 --- src/backend/utils/adt/datetime.c 2 Feb 2004 07:21:47 -0000 *************** *** 1611,1616 **** --- 1611,1620 ---- * and reassemble to get a representation of local time. */ tx = localtime(&mytime); + if (!tx) + ereport(ERROR, + (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("timestamp out of range"))); day = date2j(tx->tm_year + 1900, tx->tm_mon + 1, tx->tm_mday) - UNIX_EPOCH_JDATE; locsec = tx->tm_sec + (tx->tm_min + (day * 24 + tx->tm_hour) * 60) * 60; *************** *** 1632,1637 **** --- 1636,1645 ---- mysec += delta1; mytime = (time_t) mysec; tx = localtime(&mytime); + if (!tx) + ereport(ERROR, + (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("timestamp out of range"))); day = date2j(tx->tm_year + 1900, tx->tm_mon + 1, tx->tm_mday) - UNIX_EPOCH_JDATE; locsec = tx->tm_sec + (tx->tm_min + (day * 24 + tx->tm_hour) * 60) * 60; *************** *** 1653,1658 **** --- 1661,1670 ---- mysec += (delta2 - delta1); mytime = (time_t) mysec; tx = localtime(&mytime); + if (!tx) + ereport(ERROR, + (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("timestamp out of range"))); day = date2j(tx->tm_year + 1900, tx->tm_mon + 1, tx->tm_mday) - UNIX_EPOCH_JDATE; locsec = tx->tm_sec + (tx->tm_min + (day * 24 + tx->tm_hour) * 60) * 60;