On FreeBSD/arm, any value > 50 bits will result in a rediculously huge

number being returned for mktime and timegm calls.  Choose 48 because
that works well.  This does reduce the dynamic range of tm_year from
about 2 billion years down to "only" about 9 million years.  Please
contact me if this restriction poses a problem.

Due to the complexity of the code, I admit that I didn't trace down
what, exactly, was overflowing with longer bits.  This fixes software
that we run on the embedded systems we have.
This commit is contained in:
Warner Losh 2007-01-19 01:16:35 +00:00
parent d92e35fd5f
commit 9685457382
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=166102

View File

@ -1518,8 +1518,8 @@ const int do_norm_secs;
** If we have more than this, we will overflow tm_year for tmcomp().
** We should really return an error if we cannot represent it.
*/
if (bits > 56)
bits = 56;
if (bits > 48)
bits = 48;
/*
** If time_t is signed, then 0 is just above the median,
** assuming two's complement arithmetic.