mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-09-01 02:34:55 +00:00
mktime: clarify long_int width checking
* lib/mktime.c (long_int_is_wide_enough): Move this assertion to the top level, to make it clearer that the assumption about long_int width is being checked. See <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00554.html>.
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2011-01-30 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
mktime: clarify long_int width checking
|
||||
* lib/mktime.c (long_int_is_wide_enough): Move this assertion to
|
||||
the top level, to make it clearer that the assumption about
|
||||
long_int width is being checked. See
|
||||
<http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00554.html>.
|
||||
|
||||
2011-01-30 Simon Josefsson <simon@josefsson.org>
|
||||
|
||||
ignore-value: Fix self-test.
|
||||
|
||||
+5
-6
@@ -64,12 +64,16 @@
|
||||
# define mktime my_mktime
|
||||
#endif /* DEBUG */
|
||||
|
||||
/* Verify a requirement at compile-time (unlike assert, which is runtime). */
|
||||
#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; }
|
||||
|
||||
/* A signed type that is at least one bit wider than int. */
|
||||
#if INT_MAX <= LONG_MAX / 2
|
||||
typedef long int long_int;
|
||||
#else
|
||||
typedef long long int long_int;
|
||||
#endif
|
||||
verify (long_int_is_wide_enough, INT_MAX == INT_MAX * (long_int) 2 / 2);
|
||||
|
||||
/* Shift A right by B bits portably, by dividing A by 2**B and
|
||||
truncating towards minus infinity. A and B should be free of side
|
||||
@@ -123,9 +127,6 @@ typedef long long int long_int;
|
||||
#endif
|
||||
#define TIME_T_MIDPOINT (SHR (TIME_T_MIN + TIME_T_MAX, 1) + 1)
|
||||
|
||||
/* Verify a requirement at compile-time (unlike assert, which is runtime). */
|
||||
#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; }
|
||||
|
||||
verify (time_t_is_integer, TYPE_IS_INTEGER (time_t));
|
||||
verify (twos_complement_arithmetic,
|
||||
(TYPE_TWOS_COMPLEMENT (int)
|
||||
@@ -196,8 +197,6 @@ ydhms_diff (long_int year1, long_int yday1, int hour1, int min1, int sec1,
|
||||
int year0, int yday0, int hour0, int min0, int sec0)
|
||||
{
|
||||
verify (C99_integer_division, -1 / 2 == 0);
|
||||
verify (long_int_year_and_yday_are_wide_enough,
|
||||
INT_MAX == INT_MAX * (long_int) 2 / 2);
|
||||
|
||||
/* Compute intervening leap days correctly even if year is negative.
|
||||
Take care to avoid integer overflow here. */
|
||||
@@ -733,6 +732,6 @@ main (int argc, char **argv)
|
||||
|
||||
/*
|
||||
Local Variables:
|
||||
compile-command: "gcc -DDEBUG -Wall -W -O2 -g mktime.c -o mktime"
|
||||
compile-command: "gcc -DDEBUG -I. -Wall -W -O2 -g mktime.c -o mktime"
|
||||
End:
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user