diff --git a/daemon/core/scheduler.cpp b/daemon/core/scheduler.cpp index f9f9996f..c72e2796 100644 --- a/daemon/core/scheduler.cpp +++ b/daemon/core/scheduler.cpp @@ -109,8 +109,8 @@ Scheduler::schedulePeriodicEvent(const time::Duration& after, void Scheduler::cancelEvent(const EventId& eventId) { - if (!eventId->isValid()) - return; // event already fired or cancelled + if (!static_cast(eventId) || !eventId->isValid()) + return; // event empty, already fired, or cancelled if (static_cast(*eventId) != m_scheduledEvent) { m_events.erase(*eventId); diff --git a/tests/core/scheduler.cpp b/tests/core/scheduler.cpp index 04a9671c..593744b8 100644 --- a/tests/core/scheduler.cpp +++ b/tests/core/scheduler.cpp @@ -80,6 +80,15 @@ BOOST_FIXTURE_TEST_CASE(Events, SchedulerFixture) BOOST_CHECK_EQUAL(count4, 4); } +BOOST_AUTO_TEST_CASE(CancelEmptyEvent) +{ + boost::asio::io_service io; + Scheduler scheduler(io); + + EventId i; + scheduler.cancelEvent(i); +} + BOOST_AUTO_TEST_SUITE_END() } // namespace nfd