From: Eli Zaretskii Date: Mon, 1 Oct 2012 09:46:01 +0000 (+0200) Subject: Improve 'alarm' implementation on MS-Windows. X-Git-Tag: emacs-24.2.90~241^2~61 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4cdfbb8976eaff3cd5c36b9e2b3489483482e305;p=emacs.git Improve 'alarm' implementation on MS-Windows. src/w32proc.c (alarm) [HAVE_SETITIMER]: Be more conformant to the expected return results. [!HAVE_SETITIMER]: Behave as the previous version that didn't support timers. --- diff --git a/src/ChangeLog b/src/ChangeLog index cfa80ed8899..d972f754549 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -7,6 +7,10 @@ (getitimer, setitimer): If disable_itimers is non-zero, return an error indication without doing anything. Reported by Fabrice Popineau as part of bug#12544. + (alarm) [HAVE_SETITIMER]: Be more conformant to the expected + return results. + [!HAVE_SETITIMER]: Behave as the previous version that didn't + support timers. * emacs.c (shut_down_emacs) [WINDOWSNT]: Move the call to term_ntproc after all the other bookkeeping, to get timers working diff --git a/src/w32proc.c b/src/w32proc.c index 159d6e00957..b0881c25d6c 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -669,15 +669,19 @@ setitimer(int which, struct itimerval *value, struct itimerval *ovalue) int alarm (int seconds) { - struct itimerval new_values; +#ifdef HAVE_SETITIMER + struct itimerval new_values, old_values; new_values.it_value.tv_sec = seconds; new_values.it_value.tv_usec = 0; new_values.it_interval.tv_sec = new_values.it_interval.tv_usec = 0; - setitimer (ITIMER_REAL, &new_values, NULL); - + if (setitimer (ITIMER_REAL, &new_values, &old_values) < 0) + return 0; + return old_values.it_value.tv_sec; +#else return seconds; +#endif } /* Defined in which conflicts with the local copy */