mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
mktime: simplify offset guess
[BZ#23789] * time/mktime.c (__mktime_internal): Omit excess precision.
This commit is contained in:
parent
32c12f3f7a
commit
6c90d759f6
@ -1,5 +1,9 @@
|
||||
2018-11-15 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
mktime: simplify offset guess
|
||||
[BZ#23789]
|
||||
* time/mktime.c (__mktime_internal): Omit excess precision.
|
||||
|
||||
mktime: new test for mktime failure
|
||||
[BZ#23789]
|
||||
Based on a test suggested by Albert Aribaud in:
|
||||
|
@ -355,7 +355,7 @@ __mktime_internal (struct tm *tp,
|
||||
struct tm *(*convert) (const time_t *, struct tm *),
|
||||
mktime_offset_t *offset)
|
||||
{
|
||||
long_int t, gt, t0, t1, t2, dt;
|
||||
long_int t, gt, t0, t1, t2;
|
||||
struct tm tm;
|
||||
|
||||
/* The maximum number of probes (calls to CONVERT) should be enough
|
||||
@ -502,8 +502,8 @@ __mktime_internal (struct tm *tp,
|
||||
/* Set *OFFSET to the low-order bits of T - T0 - NEGATIVE_OFFSET_GUESS.
|
||||
This is just a heuristic to speed up the next mktime call, and
|
||||
correctness is unaffected if integer overflow occurs here. */
|
||||
INT_SUBTRACT_WRAPV (t, t0, &dt);
|
||||
INT_SUBTRACT_WRAPV (dt, negative_offset_guess, offset);
|
||||
INT_SUBTRACT_WRAPV (t, t0, offset);
|
||||
INT_SUBTRACT_WRAPV (*offset, negative_offset_guess, offset);
|
||||
|
||||
if (LEAP_SECONDS_POSSIBLE && sec_requested != tm.tm_sec)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user