FW: zic and zoneinfo.zip
Olson, Arthur David (NIH/NCI) [E]
olsona at dc37a.nci.nih.gov
Sat Sep 25 12:41:53 UTC 2010
I'm forwarding this message from Ravindra, who is not on the time zone mailing list. Those of you who are on the list, please direct replies appropriately.
(Note that the line numbers below are indeed different from those in the 2010l on elsie.nci.nih.gov, and that there's no "tz.c" file with a "tz_validate" function in 2010l on elsie.nci.nih.gov.)
--ado
-----Original Message-----
From: Ravindra [mailto:rsahlot at yahoo.com]
Sent: Saturday, September 25, 2010 8:01
To: Olson, Arthur David (NIH/NCI) [E]
Subject: RE: zic and zoneinfo.zip
Thanks Arthur!
Is there a place where I get pre-built zic binary for Linux?
I got the doubt because I could build 32-bit zic as well as 64-bit zic from source code, and I was not sure whether to build zic as a 32-bit binary or 64-bit binary. What I'm getting from your response is I can use either version of zic and use the generated timezone data files on either platform.
BTW, I'm looking at various possibilities because I'm using the code and data from version "2010l" and I'm hitting following memory error in valgrind log:
==5207== Thread 27:
==5207== Conditional jump or move depends on uninitialised value(s)
==5207== at 0x1B9F988: typesequiv (localtime.c:522)
==5207== by 0x1B9F830: tzload (localtime.c:493)
==5207== by 0x1BA261B: tz_validate (tz.c:1717)
Below call is hitting above memory error (line numbers may not match with original code because we have integrated it in our code):
1712 struct state state = {0};
1713 time_t now;
1714 struct tm tm;
1715
1716 time(&now);
*** 1717 tzload(gmt, &state, TRUE, 0);
...
tzload code:
...
486 if (sp->timecnt > 1) {
487 for (i = 1; i < sp->timecnt; ++i)
488 if (typesequiv(sp, sp->types[i], sp->types[0]) &&
489 differ_by_repeat(sp->ats[i], sp->ats[0])) {
490 sp->goback = TRUE;
491 break;
492 }
**** 493 for (i = sp->timecnt - 2; i >= 0; --i)
494 if (typesequiv(sp, sp->types[sp->timecnt - 1],
495 sp->types[i]) &&
496 differ_by_repeat(sp->ats[sp->timecnt - 1],
497 sp->ats[i])) {
498 sp->goahead = TRUE;
499 break;
500 }
501 }
...
511 static int
512 typesequiv(const struct state * const sp, const int a, const int b)
513 {
514 register int result;
515
516 if (sp == NULL ||
517 a < 0 || a >= sp->typecnt ||
518 b < 0 || b >= sp->typecnt)
519 result = FALSE;
520 else {
521 register const struct ttinfo * ap = &sp->ttis[a];
*** 522 register const struct ttinfo * bp = &sp->ttis[b];
523 result = ap->tt_gmtoff == bp->tt_gmtoff &&
524 ap->tt_isdst == bp->tt_isdst &&
525 ap->tt_ttisstd == bp->tt_ttisstd &&
526 ap->tt_ttisgmt == bp->tt_ttisgmt &&
527 strcmp(&sp->chars[ap->tt_abbrind],
528 &sp->chars[bp->tt_abbrind]) == 0;
529 }
530 return result;
531 }
It will be great if you are aware of fix for this or if you could help me how to proceed on this. I can explore this further but I'm new to this code.
Thanks in advance,
Ravindra
--- On Fri, 9/24/10, Olson, Arthur David (NIH/NCI) [E] <olsona at dc37a.nci.nih.gov> wrote:
> From: Olson, Arthur David (NIH/NCI) [E] <olsona at dc37a.nci.nih.gov>
> Subject: RE: zic and zoneinfo.zip
> To: "Ravindra" <rsahlot at yahoo.com>
> Date: Friday, September 24, 2010, 6:40 PM
> The current version of zic generates,
> for each time zone, a binary file that includes both 32-bit
> and 64-bit versions of the zone's data; the binary files
> should be usable on both 32- and 64-bit systems.
>
> --ado
More information about the tz
mailing list