This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Steve:
I agree that the month test should include a <0 check to be
consistent with the other tests.
tm_isdst should indeed be set to 0 when there is no DST and it is
passed as -1. (The code produces the correct time result in this case,
failing only to change tm_isdst appropriately.)
I have attached a patch which addresses both of these problems.
This also raises an interesting question about what to do with no
DST (e.g. with GMT) but the user passes tm_isdst>=1. It could be
considered to be illegal input. Neither the C standard nor POSIX
comment
on this case. The patch as it is chooses to ignore the given tm_isdst
when the current timezone has no DST.
Craig
2011-08-17 Craig Howland <howland@LGSInnovations.com>
* libc/time/mktime.c: set tm_isdst=0 when !daylight; account
for
tm_mon possibly being given as negative.
-----Original Message-----
From: newlib-owner@sourceware.org [mailto:newlib-owner@sourceware.org]
On Behalf Of Steven Abner
Sent: Saturday, August 13, 2011 6:36 AM
To: newlib@sourceware.org
Subject: mktime()
Good day,
Running some tests and found an omission?
In the mktime.c file, the function "validate_structure", it appears (to
me) that the month test
might be incomplete?
"if (tim_p->tm_mon > 11)"
should it possibly be:
"if (tim_p->tm_mon > 11 || tim_p->tm_mon < 0)"
And this probably should be second thread?? but I tried using the
environment variable
"TZ=GMT0" and I get tm_isdst = -1 when passing -1 in. Not sure, in this
case, if user
should be setting to 0?. It could also be that I screwed up on porting
newlib code for testing
purposes?
Cheers
Steve
Attachment:
mktime.patch.txt
Description: mktime.patch.txt
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |