diff options
Diffstat (limited to 'src/systemc/core/scheduler.hh')
-rw-r--r-- | src/systemc/core/scheduler.hh | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/systemc/core/scheduler.hh b/src/systemc/core/scheduler.hh index 7b6238843..052be08c3 100644 --- a/src/systemc/core/scheduler.hh +++ b/src/systemc/core/scheduler.hh @@ -457,8 +457,16 @@ Scheduler::TimeSlot::process() { scheduler.status(StatusTiming); - while (!events.empty()) - events.front()->run(); + try { + while (!events.empty()) + events.front()->run(); + } catch (...) { + if (events.empty()) + scheduler.completeTimeSlot(this); + else + scheduler.schedule(this); + scheduler.throwToScMain(); + } scheduler.status(StatusOther); scheduler.completeTimeSlot(this); |