diff options
Diffstat (limited to 'time/tzfile.c')
-rw-r--r-- | time/tzfile.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/time/tzfile.c b/time/tzfile.c index 970022379a..f4cba46e50 100644 --- a/time/tzfile.c +++ b/time/tzfile.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1993,1995-2001,2003,2004,2006, 2007 +/* Copyright (C) 1991-1993,1995-2001,2003,2004,2006,2007,2009 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -248,7 +248,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap) + num_transitions * (8 + 1) + num_types * 6 + chars - + num_leaps * 8 + + num_leaps * 12 + num_isstd + num_isgmt) - 1 : 0); @@ -419,6 +419,10 @@ __tzfile_read (const char *file, size_t extra, char **extrap) tzspec = __tzstring (tzstr); } + /* Don't use an empty TZ string. */ + if (tzspec != NULL && tzspec[0] == '\0') + tzspec = NULL; + fclose (f); /* First "register" all timezone names. */ @@ -659,9 +663,7 @@ __tzfile_compute (time_t timer, int use_localtime, __tzname[1] = __tzstring (&zone_names[strlen (zone_names) + 1]); } - *leap_correct = 0L; - *leap_hit = 0; - return; + goto leap; } else { @@ -762,6 +764,7 @@ __tzfile_compute (time_t timer, int use_localtime, tp->tm_gmtoff = info->offset; } + leap: *leap_correct = 0L; *leap_hit = 0; |