This is the mail archive of the
newlib-cvs@sourceware.org
mailing list for the newlib project.
[newlib-cygwin] Always assign return value to passed pointer in time function.
- From: Jeff Johnston <jjohnstn at sourceware dot org>
- To: newlib-cvs at sourceware dot org
- Date: 2 May 2016 20:27:09 -0000
- Subject: [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;
}