diff --git a/events/include/events/EventQueue.h b/events/include/events/EventQueue.h index 9aa644491f5..626b5b66a77 100644 --- a/events/include/events/EventQueue.h +++ b/events/include/events/EventQueue.h @@ -762,8 +762,10 @@ class EventQueue : private mbed::NonCopyable { F *e = new (p) F(std::move(f)); equeue_event_dtor(e, &EventQueue::function_dtor); int id = equeue_post(&_equeue, &EventQueue::function_call, e); - if (!id) + if (!id) { queue_full(QUEUE_FULL_CALL, sizeof(F)); + equeue_dealloc(&_equeue, p); + } return id; } @@ -842,8 +844,10 @@ class EventQueue : private mbed::NonCopyable { equeue_event_delay(e, ms.count()); equeue_event_dtor(e, &EventQueue::function_dtor); int id = equeue_post(&_equeue, &EventQueue::function_call, e); - if (!id) + if (!id) { queue_full(QUEUE_FULL_CALL_IN, sizeof(F)); + equeue_dealloc(&_equeue, p); + } return id; } @@ -1000,8 +1004,10 @@ class EventQueue : private mbed::NonCopyable { equeue_event_period(e, ms.count()); equeue_event_dtor(e, &EventQueue::function_dtor); int id = equeue_post(&_equeue, &EventQueue::function_call, e); - if (!id) + if (!id) { queue_full(QUEUE_FULL_CALL_EVERY, sizeof(F)); + equeue_dealloc(&_equeue, p); + } return id; }