From e50547f2650ff6b4c185286d0d20cb2efc77b7e2 Mon Sep 17 00:00:00 2001 From: WanqQixiang Date: Tue, 6 Dec 2022 14:45:10 +0800 Subject: [PATCH] event_handler: Allows removal of eventHandler in eventHandler->Handler --- src/include/platform/internal/GenericPlatformManagerImpl.ipp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/include/platform/internal/GenericPlatformManagerImpl.ipp b/src/include/platform/internal/GenericPlatformManagerImpl.ipp index 7a46248e0eb312..4cee5dab0b5cd8 100644 --- a/src/include/platform/internal/GenericPlatformManagerImpl.ipp +++ b/src/include/platform/internal/GenericPlatformManagerImpl.ipp @@ -292,9 +292,11 @@ template void GenericPlatformManagerImpl::DispatchEventToApplication(const ChipDeviceEvent * event) { // Dispatch the event to each of the registered application event handlers. - for (AppEventHandler * eventHandler = mAppEventHandlerList; eventHandler != nullptr; eventHandler = eventHandler->Next) + for (AppEventHandler * eventHandler = mAppEventHandlerList; eventHandler != nullptr;) { + AppEventHandler * nextEventHandler = eventHandler->Next; eventHandler->Handler(event, eventHandler->Arg); + eventHandler = nextEventHandler; } }