From: Thomas Bushnell, BSG Date: Mon, 26 Aug 1996 20:34:42 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: cvs/glibc-1-93~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=485604b41c5554c01542b2b1a8f24d3be59a678b;p=thirdparty%2Fglibc.git *** empty log message *** --- diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c index 01c17f77259..479b3273c39 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. */