[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: coreutils-8.14.116-1e18d on HP-UX 11.00
From: |
Paul Eggert |
Subject: |
Re: coreutils-8.14.116-1e18d on HP-UX 11.00 |
Date: |
Wed, 04 Jan 2012 16:08:25 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0 |
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 <address@hidden>
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 <address@hidden>
+ 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