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>
This commit is contained in:
Jeff Johnston 2016-05-02 16:11:26 -04:00
parent 58dd08ee50
commit f310e8d951
1 changed files with 6 additions and 7 deletions

View File

@ -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;
}