On 01/04/12 15:11, Bruno Haible wrote: > 190112132045.51 return value mismatch: got 0, expected 1 > skipping 190112132045.52: result is out of range of your time_t
That test assumes that signed integer overflow wraps around, which isn't a safe assumption these days. I pushed this to remove the assumption. I don't know if this'll fix the problem on HP-UX, but it does fix a portability bug. >From 78f4bb60feed11a5241fec297d8250c1b11cc5b2 Mon Sep 17 00:00:00 2001 From: Paul Eggert <egg...@cs.ucla.edu> Date: Wed, 4 Jan 2012 16:04:38 -0800 Subject: [PATCH] test-posixtm: don't assume signed integer wraparound * tests/test-posixtm.c (main): Don't assume wraparound semantics after signed integer overflow. Inspired by (though it may not fix) Bruno Haible's bug report in <http://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00066.html>. --- ChangeLog | 6 ++++++ tests/test-posixtm.c | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 17e9ab3..0f554e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2012-01-04 Paul Eggert <egg...@cs.ucla.edu> + test-posixtm: don't assume signed integer wraparound + * tests/test-posixtm.c (main): Don't assume wraparound semantics + after signed integer overflow. Inspired by (though it may not + fix) Bruno Haible's bug report in + <http://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00066.html>. + Spell out "Windows 9x" and "Windows XP". * lib/poll.c, lib/select.c: In comments, replace "Win9x" with "Windows 9x" and "WinXP" with "Windows XP". diff --git a/tests/test-posixtm.c b/tests/test-posixtm.c index 229c82c..8400c39 100644 --- a/tests/test-posixtm.c +++ b/tests/test-posixtm.c @@ -118,7 +118,7 @@ main (void) for (i = 0; T[i].in; i++) { time_t t_out; - time_t t_exp = T[i].t_expected; + time_t t_exp; bool ok; /* Some tests assume that time_t is signed. @@ -130,13 +130,16 @@ main (void) continue; } - if (T[i].valid && t_exp != T[i].t_expected) + if (! (TYPE_MINIMUM (time_t) <= T[i].t_expected + && T[i].t_expected <= TYPE_MAXIMUM (time_t))) { printf ("skipping %s: result is out of range of your time_t\n", T[i].in); continue; } + t_exp = T[i].t_expected; + /* If an input string does not specify the year number, determine the expected output by calling posixtime with an otherwise equivalent string that starts with the current year. */ -- 1.7.6.5