--- localtime.cc.orig 2009-06-14 05:35:35.000000000 -0400 +++ localtime.cc 2010-10-30 13:28:36.421875000 -0400 @@ -597,6 +597,7 @@ static char lcl_TZname[TZ_STRLEN_MAX + 1]; static int lcl_is_set; static int gmt_is_set; +static int TZ_is_set; #define tzname _tzname #undef _tzname @@ -1479,11 +1480,14 @@ const char * name = getenv("TZ"); if (name == NULL) { - if (!lcl_is_set) + if (!lcl_is_set || TZ_is_set) { + TZ_is_set = 0; tzsetwall(); + } goto out; } + TZ_is_set = 1; if (lcl_is_set > 0 && strcmp(lcl_TZname, name) == 0) goto out; lcl_is_set = (strlen(name) < sizeof (lcl_TZname));