(my_strftime) [! defined _LIBC && ! HAVE_RUN_TZSET_TEST]:
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 4 Jul 2005 05:06:44 +0000 (05:06 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 4 Jul 2005 05:06:44 +0000 (05:06 +0000)
Copy the input structure, to work around some of the bug with
Solaris 2.5.1 and Solaris 2.6.

lib/strftime.c

index 37c5123..fb7354e 100644 (file)
@@ -373,13 +373,6 @@ static CHAR_T const month_name[][10] =
 # define ns 0
 #endif
 
-#if ! defined _LIBC && ! HAVE_RUN_TZSET_TEST
-/* Solaris 2.5.x and 2.6 tzset sometimes modify the storage returned
-   by localtime.  On such systems, we must use the tzset and localtime
-   wrappers to work around the bug.  */
-"you must run the autoconf test for a working tzset function"
-#endif
-
 
 /* Write information from TP into S according to the format
    string FORMAT, writing no more that MAXSIZE characters
@@ -439,6 +432,15 @@ my_strftime (CHAR_T *s, size_t maxsize, const CHAR_T *format,
   const char *format_end = NULL;
 #endif
 
+#if ! defined _LIBC && ! HAVE_RUN_TZSET_TEST
+  /* Solaris 2.5.x and 2.6 tzset sometimes modify the storage returned
+     by localtime.  On such systems, we must either use the tzset and
+     localtime wrappers to work around the bug (which sets
+     HAVE_RUN_TZSET_TEST) or make a copy of the structure.  */
+  struct tm copy = *tp;
+  tp = &copy;
+#endif
+
   zone = NULL;
 #if HAVE_TM_ZONE
   /* The POSIX test suite assumes that setting