diff options
author | Andrew Cagney <cagney@redhat.com> | 2000-04-28 06:02:51 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2000-04-28 06:02:51 +0000 |
commit | 0c22be818ba91eba45f8930752fb7dada13c9f78 (patch) | |
tree | 9a7446e793d44df75413ad4432f955cc5b0efeef /sim/ppc/events.c | |
parent | 25d704f304309dd7585e734823d43071a6c558e5 (diff) | |
download | fsf-binutils-gdb-0c22be818ba91eba45f8930752fb7dada13c9f78.zip fsf-binutils-gdb-0c22be818ba91eba45f8930752fb7dada13c9f78.tar.gz fsf-binutils-gdb-0c22be818ba91eba45f8930752fb7dada13c9f78.tar.bz2 |
Fix event insertion when processing more than one event for the current time.
Diffstat (limited to 'sim/ppc/events.c')
-rw-r--r-- | sim/ppc/events.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sim/ppc/events.c b/sim/ppc/events.c index 5743ffd..72c9138 100644 --- a/sim/ppc/events.c +++ b/sim/ppc/events.c @@ -180,7 +180,6 @@ update_time_from_event(event_queue *events) } } ASSERT(current_time == event_queue_time(events)); - ASSERT((events->time_from_event >= 0) == (events->queue != NULL)); } STATIC_INLINE_EVENTS\ @@ -394,12 +393,15 @@ event_queue_process(event_queue *events) (long)handler, (long)data)); zfree(to_do); + /* Always re-compute the time to the next event so that HANDLER() + can safely insert new events into the queue. */ + update_time_from_event(events); handler(data); } events->processing = 0; - /* re-caculate time for new events */ - update_time_from_event(events); + ASSERT(events->time_from_event > 0); + ASSERT(events->queue != NULL); /* always poll event */ } |