diff options
author | imp <imp@FreeBSD.org> | 2007-01-19 01:16:35 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2007-01-19 01:16:35 +0000 |
commit | 4e9ace58c2704aa479abc22ea7d79817aff75229 (patch) | |
tree | 5de3aad0bab371669021de595a7552e478958459 /lib | |
parent | 542ee93dabab0ff4433f7dba62ccd6bf4772e28b (diff) | |
download | FreeBSD-src-4e9ace58c2704aa479abc22ea7d79817aff75229.zip FreeBSD-src-4e9ace58c2704aa479abc22ea7d79817aff75229.tar.gz |
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.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/stdtime/localtime.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/libc/stdtime/localtime.c b/lib/libc/stdtime/localtime.c index d7b5a36..827b140 100644 --- a/lib/libc/stdtime/localtime.c +++ b/lib/libc/stdtime/localtime.c @@ -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. |