This is the mail archive of the newlib-cvs@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[newlib-cygwin] Always assign return value to passed pointer in time function.


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=f310e8d951acfdbcacc56501e39c2e26caf152ae

commit f310e8d951acfdbcacc56501e39c2e26caf152ae
Author: Jeff Johnston <jjohnstn@redhat.com>
Date:   Mon May 2 16:11:26 2016 -0400

    Always assign return value to passed pointer in time function.
    
    If the passed t pointer is not a null pointer, always assign the return
    value to the object it points to, regardless of whether the return value
    is an error.
    
    This is what the GNU C Library does, and this is also the expected
    behavior according to the latest draft of the C programming language
    standard (C11 ISO/IEC 9899:201x WG14 N1570, dated 2011-04-12):
    
    Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com>

Diff:
---
 newlib/libc/time/time.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/newlib/libc/time/time.c b/newlib/libc/time/time.c
index 2506388..9de71d4 100644
--- a/newlib/libc/time/time.c
+++ b/newlib/libc/time/time.c
@@ -43,11 +43,10 @@ _DEFUN (time, (t),
 {
   struct timeval now;
 
-  if (_gettimeofday_r (_REENT, &now, NULL) >= 0)
-    {
-      if (t)
-	*t = now.tv_sec;
-      return now.tv_sec;
-    }
-  return -1;
+  if (_gettimeofday_r (_REENT, &now, NULL) < 0)
+    now.tv_sec = (time_t) -1;
+
+  if (t)
+    *t = now.tv_sec;
+  return now.tv_sec;
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]