winsup/cygwin/times.cc (times): follow Linux and allow for a NULL buf argument

Adresses the problem reported here:

  https://cygwin.com/ml/cygwin/2019-09/msg00141.html
This commit is contained in:
Achim Gratz 2019-09-15 18:28:21 +02:00 committed by Ken Brown
parent 9103de7028
commit 7513fee1bb
1 changed files with 11 additions and 6 deletions

View File

@ -72,6 +72,10 @@ times (struct tms *buf)
/* ticks is in in 100ns, convert to clock ticks. */ /* ticks is in in 100ns, convert to clock ticks. */
tc = (clock_t) (ticks.QuadPart * CLOCKS_PER_SEC / NS100PERSEC); tc = (clock_t) (ticks.QuadPart * CLOCKS_PER_SEC / NS100PERSEC);
/* Linux allows a NULL buf and just returns tc in that case, so
mimic that */
if (buf)
{
buf->tms_stime = __to_clock_t (&kut.KernelTime, 0); buf->tms_stime = __to_clock_t (&kut.KernelTime, 0);
buf->tms_utime = __to_clock_t (&kut.UserTime, 0); buf->tms_utime = __to_clock_t (&kut.UserTime, 0);
timeval_to_filetime (&myself->rusage_children.ru_stime, &kut.KernelTime); timeval_to_filetime (&myself->rusage_children.ru_stime, &kut.KernelTime);
@ -79,6 +83,7 @@ times (struct tms *buf)
timeval_to_filetime (&myself->rusage_children.ru_utime, &kut.UserTime); timeval_to_filetime (&myself->rusage_children.ru_utime, &kut.UserTime);
buf->tms_cutime = __to_clock_t (&kut.UserTime, 1); buf->tms_cutime = __to_clock_t (&kut.UserTime, 1);
} }
}
__except (EFAULT) __except (EFAULT)
{ {
tc = (clock_t) -1; tc = (clock_t) -1;