summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAchim Gratz <Stromeko@nexgo.de>2019-09-15 18:28:21 +0200
committerKen Brown <kbrown@cornell.edu>2019-09-15 13:12:03 -0400
commitd5f84126e56ee860b10a8a5826dc568e2c266f1b (patch)
tree9022cc60aa83a40c5fa49c87c226ee3a4bf5eb6c
parent70cd49e2045bae06faff1955342a1b0e1b038466 (diff)
downloadcygnal-d5f84126e56ee860b10a8a5826dc568e2c266f1b.tar.gz
cygnal-d5f84126e56ee860b10a8a5826dc568e2c266f1b.tar.bz2
cygnal-d5f84126e56ee860b10a8a5826dc568e2c266f1b.zip
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
-rw-r--r--winsup/cygwin/times.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc
index 8908d44f1..909cae1f1 100644
--- a/winsup/cygwin/times.cc
+++ b/winsup/cygwin/times.cc
@@ -72,12 +72,17 @@ times (struct tms *buf)
/* ticks is in in 100ns, convert to clock ticks. */
tc = (clock_t) (ticks.QuadPart * CLOCKS_PER_SEC / NS100PERSEC);
- buf->tms_stime = __to_clock_t (&kut.KernelTime, 0);
- buf->tms_utime = __to_clock_t (&kut.UserTime, 0);
- timeval_to_filetime (&myself->rusage_children.ru_stime, &kut.KernelTime);
- buf->tms_cstime = __to_clock_t (&kut.KernelTime, 1);
- timeval_to_filetime (&myself->rusage_children.ru_utime, &kut.UserTime);
- buf->tms_cutime = __to_clock_t (&kut.UserTime, 1);
+ /* 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_utime = __to_clock_t (&kut.UserTime, 0);
+ timeval_to_filetime (&myself->rusage_children.ru_stime, &kut.KernelTime);
+ buf->tms_cstime = __to_clock_t (&kut.KernelTime, 1);
+ timeval_to_filetime (&myself->rusage_children.ru_utime, &kut.UserTime);
+ buf->tms_cutime = __to_clock_t (&kut.UserTime, 1);
+ }
}
__except (EFAULT)
{