From 485604b41c5554c01542b2b1a8f24d3be59a678b Mon Sep 17 00:00:00 2001 From: "Thomas Bushnell, BSG" Date: Mon, 26 Aug 1996 20:34:42 +0000 Subject: *** empty log message *** --- sysdeps/mach/hurd/setitimer.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'sysdeps/mach/hurd') diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c index 01c17f7725..479b3273c3 100644 --- a/sysdeps/mach/hurd/setitimer.c +++ b/sysdeps/mach/hurd/setitimer.c @@ -140,7 +140,7 @@ static int setitimer_locked (const struct itimerval *new, struct itimerval *old, void *crit) { - struct itimerval newval = *new; + struct itimerval newval; struct timeval now, remaining, elapsed; struct timeval old_interval; error_t err; @@ -154,6 +154,18 @@ setitimer_locked (const struct itimerval *new, struct itimerval *old, _hurd_itimer_thread = MACH_PORT_NULL; } + if (!new) + { + /* Just return the current value in OLD without changing anything. + This is what BSD does, even though it's not documented. */ + if (old) + *old = _hurd_itemerval; + spin_unlock (&_hurd_itimer_lock); + _hurd_critical_section_unlock (crit); + return 0; + } + + newval = *new; if ((newval.it_value.tv_sec | newval.it_value.tv_usec) != 0) { /* Make sure the itimer thread is set up. */ -- cgit 1.4.1