PR 47802 Hack to work around draft POSIX localtime_r
authorjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Mar 2011 17:52:10 +0000 (17:52 +0000)
committerjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Mar 2011 17:52:10 +0000 (17:52 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170680 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/intrinsics/ctime.c

index a628fdd..73e2bb2 100644 (file)
@@ -1,3 +1,9 @@
+2011-03-04  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR libfortran/47802
+       * intrinsics/ctime.c (strctime): Don't use return value of
+       localtime_r.
+
 2011-02-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/47567
index 7eb10f5..29a0e6f 100644 (file)
@@ -39,9 +39,13 @@ static size_t
 strctime (char *s, size_t max, const time_t *timep)
 {
 #ifdef HAVE_STRFTIME
-  struct tm res;
-  struct tm *ltm = localtime_r (timep, &res);
-  return strftime (s, max, "%c", ltm);
+  struct tm ltm;
+  /* Note: We can't use the return value of localtime_r, as some
+     targets provide localtime_r based on a draft of the POSIX
+     standard where the return type is int rather than the
+     standardized struct tm*.  */
+  localtime_r (timep, &ltm);
+  return strftime (s, max, "%c", &ltm);
 #else
   return 0;
 #endif