diff --git a/src/simulator/default-simulator-impl.cc b/src/simulator/default-simulator-impl.cc index ec3db6aac..bf3cd2105 100644 --- a/src/simulator/default-simulator-impl.cc +++ b/src/simulator/default-simulator-impl.cc @@ -124,7 +124,7 @@ DefaultSimulatorImpl::ProcessOneEvent (void) bool DefaultSimulatorImpl::IsFinished (void) const { - return m_events->IsEmpty (); + return m_events->IsEmpty () || m_stop; } uint64_t diff --git a/src/simulator/realtime-simulator-impl.cc b/src/simulator/realtime-simulator-impl.cc index 5cc3c10b1..fd26901a2 100644 --- a/src/simulator/realtime-simulator-impl.cc +++ b/src/simulator/realtime-simulator-impl.cc @@ -384,7 +384,7 @@ RealtimeSimulatorImpl::IsFinished (void) const bool rc; { CriticalSection cs (m_mutex); - rc = m_events->IsEmpty (); + rc = m_events->IsEmpty () || m_stop; } return rc; diff --git a/src/simulator/simulator.h b/src/simulator/simulator.h index 11a4a1a9d..d0d66a9c4 100644 --- a/src/simulator/simulator.h +++ b/src/simulator/simulator.h @@ -97,8 +97,9 @@ public: static void Destroy (void); /** - * If there any any events lefts to be scheduled, return - * true. Return false otherwise. + * If there any any events lefts to be scheduled and simulation time + * has not yet reached the "stop time" (see Simulator::Stop()), + * return true. Return false otherwise. */ static bool IsFinished (void); /**