Possible tiny bug in tzcode

Olson, Arthur David (NCI) olsona at dc37a.nci.nih.gov
Tue Dec 4 20:27:41 UTC 2001


Apologies for the long turnaround time on this bug;
I've been out for some routine surgery.

Attached find the proposed fix for the Asia/Bishkek bug.
I did before-and-after testing on the time zone files produced from the
sources
that are distributed from elsie.nci.nih.gov; the Asia/Bishkek file was the
only one
changed by the fix.

The probable right course of action in the next release is to both include
this fix
and incorporate Paul Eggert's workaround (so that folks who throw new data
files at
old compilers get the right result).

				--ado

*** 7.102/zic.c	Tue Dec  4 15:20:50 2001
--- 7.104/zic.c	Tue Dec  4 15:20:52 2001
***************
*** 1,6 ****
  #ifndef lint
  #ifndef NOID
! static char	elsieid[] = "@(#)zic.c	7.102";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
--- 1,6 ----
  #ifndef lint
  #ifndef NOID
! static char	elsieid[] = "@(#)zic.c	7.104";
  #endif /* !defined NOID */
  #endif /* !defined lint */
  
***************
*** 1605,1614 ****
  	typecnt = 0;
  	charcnt = 0;
  	/*
- 	** A guess that may well be corrected later.
- 	*/
- 	stdoff = 0;
- 	/*
  	** Thanks to Earl Chew (earl at dnd.icp.nec.com.au)
  	** for noting the need to unconditionally initialize startttisstd.
  	*/
--- 1605,1610 ----
***************
*** 1615,1620 ****
--- 1611,1620 ----
  	startttisstd = FALSE;
  	startttisgmt = FALSE;
  	for (i = 0; i < zonecount; ++i) {
+ 		/*
+ 		** A guess that may well be corrected later.
+ 		*/
+ 		stdoff = 0;
  		zp = &zpfirst[i];
  		usestart = i > 0 && (zp - 1)->z_untiltime > min_time;
  		useuntil = i < (zonecount - 1);
***************
*** 1634,1641 ****
  			if (usestart) {
  				addtt(starttime, type);
  				usestart = FALSE;
! 			}
! 			else if (stdoff != 0)
  				addtt(min_time, type);
  		} else for (year = min_year; year <= max_year; ++year) {
  			if (useuntil && year > zp->z_untilrule.r_hiyear)
--- 1634,1640 ----
  			if (usestart) {
  				addtt(starttime, type);
  				usestart = FALSE;
! 			} else if (stdoff != 0)
  				addtt(min_time, type);
  		} else for (year = min_year; year <= max_year; ++year) {
  			if (useuntil && year > zp->z_untilrule.r_hiyear)



More information about the tz mailing list