OSDN Git Service

* libc/time/tzset_r.c (tzset_r): Correct behavior for changing from
authorcorinna <corinna>
Tue, 14 Jun 2011 07:50:40 +0000 (07:50 +0000)
committercorinna <corinna>
Tue, 14 Jun 2011 07:50:40 +0000 (07:50 +0000)
non-GMT to GMT, when un-setting TZ.  Set _timezone and _daylight even
if no DST is given in TZ.

newlib/ChangeLog
newlib/libc/time/tzset_r.c

index c018583..350c933 100644 (file)
@@ -1,3 +1,9 @@
+2011-06-14  Craig Howland <howland@LGSInnovations.com>
+
+       * libc/time/tzset_r.c (tzset_r):  Correct behavior for changing from
+       non-GMT to GMT, when un-setting TZ.  Set _timezone and _daylight even
+       if no DST is given in TZ.
+
 2011-06-13  Eric Blake  <eblake@redhat.com>
 
        * libc/stdio/wsetup.c (__swsetup_r): Set errno on failure.
index d8f5c66..5a5a959 100644 (file)
@@ -28,6 +28,8 @@ _DEFUN (_tzset_r, (reent_ptr),
        _daylight = 0;
        _tzname[0] = "GMT";
        _tzname[1] = "GMT";
+       free(prev_tzenv);
+       prev_tzenv = NULL;
        TZ_UNLOCK;
        return;
       }
@@ -80,8 +82,10 @@ _DEFUN (_tzset_r, (reent_ptr),
   tzenv += n;
   
   if (sscanf (tzenv, "%10[^0-9,+-]%n", __tzname_dst, &n) <= 0)
-    {
+    { /* No dst */
       _tzname[1] = _tzname[0];
+      _timezone = tz->__tzrule[0].offset;
+      _daylight = 0;
       TZ_UNLOCK;
       return;
     }