fix(event) be sure to move all elements in copy “lv_obj_remove_event_cb” (#2492)
* modified the event function * modified the event function Co-authored-by: Chao.Qian <qianchao@onmicro.ic>
This commit is contained in:
@@ -173,8 +173,7 @@ bool lv_obj_remove_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb)
|
||||
if(obj->spec_attr->event_dsc[i].cb == event_cb) {
|
||||
/*Shift the remaining event handlers forward*/
|
||||
for(; i < (obj->spec_attr->event_dsc_cnt-1); i++) {
|
||||
obj->spec_attr->event_dsc[i].cb = obj->spec_attr->event_dsc[i+1].cb;
|
||||
obj->spec_attr->event_dsc[i].user_data = obj->spec_attr->event_dsc[i+1].user_data;
|
||||
obj->spec_attr->event_dsc[i] = obj->spec_attr->event_dsc[i+1];
|
||||
}
|
||||
obj->spec_attr->event_dsc_cnt--;
|
||||
obj->spec_attr->event_dsc = lv_mem_realloc(obj->spec_attr->event_dsc, obj->spec_attr->event_dsc_cnt * sizeof(lv_event_dsc_t));
|
||||
@@ -197,8 +196,7 @@ bool lv_obj_remove_event_dsc(lv_obj_t * obj, struct _lv_event_dsc_t * event_dsc)
|
||||
if(&obj->spec_attr->event_dsc[i] == event_dsc) {
|
||||
/*Shift the remaining event handlers forward*/
|
||||
for(; i < (obj->spec_attr->event_dsc_cnt-1); i++) {
|
||||
obj->spec_attr->event_dsc[i].cb = obj->spec_attr->event_dsc[i+1].cb;
|
||||
obj->spec_attr->event_dsc[i].user_data = obj->spec_attr->event_dsc[i+1].user_data;
|
||||
obj->spec_attr->event_dsc[i] = obj->spec_attr->event_dsc[i+1];
|
||||
}
|
||||
obj->spec_attr->event_dsc_cnt--;
|
||||
obj->spec_attr->event_dsc = lv_mem_realloc(obj->spec_attr->event_dsc, obj->spec_attr->event_dsc_cnt * sizeof(lv_event_dsc_t));
|
||||
|
||||
Reference in New Issue
Block a user