summaryrefslogtreecommitdiff
path: root/src/atimer.c
diff options
context:
space:
mode:
authorGerd Moellmann <gerd@gnu.org>2000-02-17 13:15:26 +0000
committerGerd Moellmann <gerd@gnu.org>2000-02-17 13:15:26 +0000
commit2503c8b1aee911d3a53a7950e39eab34c05192fb (patch)
treee1a55adb56e7a50faf91763dd1248717ed262ed8 /src/atimer.c
parent249652b19d1b0e8709e623483fcc6213e02dbf75 (diff)
downloademacs-2503c8b1aee911d3a53a7950e39eab34c05192fb.tar.gz
(stop_other_atimers): Don't call cancel_atimer because
that unblocks alarms.
Diffstat (limited to 'src/atimer.c')
-rw-r--r--src/atimer.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/atimer.c b/src/atimer.c
index 9dc4f508f8b..279c5f9eba1 100644
--- a/src/atimer.c
+++ b/src/atimer.c
@@ -214,11 +214,23 @@ stop_other_atimers (t)
if (t)
{
- cancel_atimer (t);
- if (free_atimers != t)
- abort ();
- free_atimers = free_atimers->next;
- t->next = NULL;
+ struct atimer *p, *prev;
+
+ /* See if T is active. */
+ for (p = atimers, prev = 0; p && p != t; p = p->next)
+ ;
+
+ if (p == t)
+ {
+ if (prev)
+ prev->next = t->next;
+ else
+ atimers = t->next;
+ t->next = NULL;
+ }
+ else
+ /* T is not active. Let's handle this like T == 0. */
+ t = NULL;
}
stopped_atimers = atimers;