libc/minimal: fix reproducibility of gmtime
struct tm has fields that were not being set by the implementation, causing the test to fail when the uninitialized values were compared with a static initialized result. Zero the structure before filling it. Closes #17794 Signed-off-by: Peter A. Bigot <pab@pabigot.com>
This commit is contained in:
parent
25bca3cec4
commit
b8af1a6a4e
2 changed files with 6 additions and 1 deletions
|
@ -84,6 +84,8 @@ struct tm *gmtime_r(const time_t *_MLIBC_RESTRICT timep,
|
|||
bigint_type days = (z >= 0 ? z : z - 86399) / 86400;
|
||||
unsigned int rem = z - days * 86400;
|
||||
|
||||
*tp = (struct tm){ 0 };
|
||||
|
||||
time_civil_from_days(days, tp);
|
||||
|
||||
tp->tm_hour = rem / 60U / 60U;
|
||||
|
|
|
@ -12,7 +12,10 @@
|
|||
|
||||
void test_gmtime(void)
|
||||
{
|
||||
struct tm tm;
|
||||
struct tm tm = {
|
||||
/* Initialize an unset field */
|
||||
.tm_isdst = 1234,
|
||||
};
|
||||
time_t time = 1561994005;
|
||||
|
||||
zassert_equal(&tm, gmtime_r(&time, &tm),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue