From bfc428ecd174b43813bb589b3e23185cc6154f1d Mon Sep 17 00:00:00 2001 From: xaowang96 <32351888+xaowang96@users.noreply.github.com> Date: Fri, 19 Nov 2021 22:32:42 +0800 Subject: [PATCH] fix(event): event_send_core crash in special case. (#2807) Add or delete event callback in lv_obj_event_base, the address of event_dsc will change, causing crash. Change-Id: I3085a077826e4c132f8f5088d31cad1d0ffd3b9f --- src/core/lv_event.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/lv_event.c b/src/core/lv_event.c index c9671fa8d..21b79f16a 100644 --- a/src/core/lv_event.c +++ b/src/core/lv_event.c @@ -410,10 +410,11 @@ static lv_res_t event_send_core(lv_event_t * e) if(indev_act->driver->feedback_cb) indev_act->driver->feedback_cb(indev_act->driver, e->code); } - lv_event_dsc_t * event_dsc = lv_obj_get_event_dsc(e->current_target, 0); lv_res_t res = LV_RES_OK; res = lv_obj_event_base(NULL, e); + lv_event_dsc_t * event_dsc = lv_obj_get_event_dsc(e->current_target, 0); + uint32_t i = 0; while(event_dsc && res == LV_RES_OK) { if(event_dsc->cb && (event_dsc->filter == LV_EVENT_ALL || event_dsc->filter == e->code)) {