Re: FW: tzcode2006a.tar.gz on Irix 6.5.18m
Thanks for looking into the problem. zdump.c relies on undefined behavior on overflow, which is the problem here, but if we can assume C99+LIA-1 semantics (the common case) we can get a reliable result. Also, I think it's safer to avoid 'register'. Does the following patch to zdump.c fix things for you? --- zdump.c 2006/02/02 20:42:22 2005.18.0.1 +++ zdump.c 2006/02/08 00:33:28 @@ -418,14 +418,21 @@ _("%s: use of -v on system with floating } } else if (0 > (time_t) -1) { /* - ** time_t is signed. + ** time_t is signed. Assume overflow wraps around. */ - register time_t hibit; + time_t t = 0; + time_t t1 = 1; - for (hibit = 1; (hibit * 2) != 0; hibit *= 2) - continue; - absolute_min_time = hibit; - absolute_max_time = -(hibit + 1); + while (t < t1) { + t = t1; + t1 = 2 * t1 + 1; + } + + absolute_max_time = t; + t = -t; + absolute_min_time = t - 1; + if (t < absolute_min_time) + absolute_min_time = t; } else { /* ** time_t is unsigned.
participants (1)
-
Paul Eggert